Как кодировать облако тегов в Ltihium без HABTM?

Я немного туманен с отношениями Lithiums. Я пытаюсь создать облако тегов с помощью Lithium, но не знаю, как это сделать без использования отношений HABTM. Я использую MySQL, кстати.

Какие-либо предложения?

:edited, чтобы добавить пример кода:

Вот очень упрощенная версия того, над чем я сейчас работаю. У меня есть 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


person Housni    schedule 22.03.2012    source источник
comment
не могли бы вы привести пример? =) я хотел бы помочь, но не могу понять проблему   -  person Tomen    schedule 24.03.2012
comment
Спасибо Томен. Я отредактировал свой оригинальный пост, чтобы показать свои модели.   -  person Housni    schedule 25.03.2012
comment
Я все еще пытаюсь понять это. Был бы признателен, если бы кто-то мог указать мне в правильном направлении.   -  person Housni    schedule 28.03.2012
comment
извините, я не знаю ответа на этот вопрос. я предлагаю вам попробовать спросить через IRC   -  person Tomen    schedule 28.03.2012


Ответы (1)


Если вы используете SQL, изучите: Как выполнять соединения с литием модели? для примеров соединения.

Другим способом может быть разработка модели «Присоединиться», которая использует собственный запрос habtm. Есть несколько примеров CakePHP, которые должны быть легко адаптированы.

Или, используя noSQL со встроенными документами.

person dgAlien    schedule 23.03.2012
comment
Спасибо за ответ. Я использую SQL. Я должен был упомянуть об этом. Я отредактирую исходный пост. Я знаю, как использовать find() и вызывать соединения. Я просто не уверен, как реализовать HABTM в моделях. Например, я не знаю, как использовать hasOne, hasMany, ownTo и т. д. для имитации HABTM. Я погуглю и поищу, как это делает Cake. Это может немного помочь. - person Housni; 23.03.2012
comment
Вы можете создать три модели => две обычные и одну модель от n до m: Users, UsersToCities, Cities. затем свяжите их, как обычно. - person dgAlien; 23.03.2012
comment
Но как мне получить данные о городах при переборе пользователей? - person Housni; 24.03.2012