Как кодировать облако тегов в Ltihium без HABTM? - PullRequest
3 голосов
/ 23 марта 2012

Я немного туманно отношусь к Литиям.Я пытаюсь создать облако тегов с помощью 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

1 Ответ

1 голос
/ 23 марта 2012

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

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

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

...