3

私はリチウムとの関係に少し戸惑っています。Lithium を使用してタグ クラウドを作成しようとしていますが、HABTM 関係を使用せずにこれを行う方法がわかりません。私はMySQLを使用しています。

助言がありますか?

:サンプルコードを追加するために編集:

これは、私が現在取り組んでいるものの非常に単純化されたバージョンです。と がItemsありTagsますItemsTags

<?php

namespace app\models;

class Tags extends \app\extensions\data\Model {

    public $hasMany   = array('ItemsTags');

    // {{{ schema
    protected $_schema = array(
        'id'       => array('type' => 'integer', 'key' => 'primary'),
        'title'    => array('type' => 'string'),
        'created'  => array('type' => 'integer'),
        'modified' => array('type' => 'integer')
    );
    // }}}
}

?>



<?php

namespace app\models;

class Items extends \app\extensions\data\Model {

    public $hasMany   = array('ItemsTags');

    // {{{ schema
    protected $_schema = array(
        'id'          => array('type' => 'integer', 'key' => 'primary'),
        'title'       => array('type' => 'string'),
        'sku'         => array('type' => 'string'),
        'price'       => array('type' => 'float'),
        'created'     => array('type' => 'integer'),
        'modified'    => array('type' => 'integer')
    );
    // }}}
}

?>



<?php

namespace app\models;

class ItemsTags extends \app\extensions\data\Model {

    public $belongsTo = array('Tags', 'Items');

    // {{{ schema
    protected $_schema = array(
        'id'       => array('type' => 'integer', 'key' => 'primary'),
        'tag_id'   => array('type' => 'integer'),
        'item_id'  => array('type' => 'integer'),
        'created'  => array('type' => 'integer'),
        'modified' => array('type' => 'integer')
    );
    // }}}
}
?>



<?php
    $items = Items::find('first', array(
        'conditions' => array('myField' => 'myCondition')
    ));
?>

Tags経由でデータにアクセスできるようにコードを変更するにはどうすればよいですか$items

4

1 に答える 1

1

SQL を使用している場合は、以下を参照してください:リチウム モデルとの結合を実行するにはどうすればよいですか? 結合の例。

もう 1 つの方法は、独自の habtm クエリを使用する「結合」モデルを設計することです。あまり混乱することなく適応できるはずの CakePHP の例がいくつかあります。

または、埋め込みドキュメントで noSQL を使用します。

于 2012-03-23T12:57:50.663 に答える