sql дерево - Adjacency List

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

sql дерево - Adjacency List

Сообщение Ekstazi »

Добрый день, возникла проблема при создании модели sql дерева.
Имею таблицу category вида:
id|parent|title
И метод relations:

Код: Выделить всё

    public function relations()
    {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array(
                    'parentModel'=>array(self::BELONGS_TO,'Category','parent'),
                    'children'=>array(self::HAS_MANY,'Category','id','condition'=>'??.parent=category.id','alias'=>'B'),
        );
    }
 
Так вот parentModel я могу получить, а вот children пуст. Как решить вопрос ? Интересно решение без DAO и без добавление своего метода в модель.
Вариант вида:

Код: Выделить всё

                    'children'=>array(self::HAS_MANY,'Category','id','condition'=>'??.parent=id','alias'=>'B'),
 
ругается что поле присутствует и там и там
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: sql дерево - Adjacency List

Сообщение Ekstazi »

Пришлось помучаться, еле включил вывод sql запросов(дописал).
Вообщем правильно будет вот так:

Код: Выделить всё

        return array(
                    'parentModel'=>array(self::BELONGS_TO,'Category','parent'),
                    'children'=>array(self::HAS_MANY,'Category','parent'),
        );
 
Сейчас расшифрую:
Допустим есть модель A и мы её связываем с моделью B. Так вот если тип связи BELONGS_TO тогда поле что мы указали берется из таблицы A и связывается с таблицой B. Все иначе если мы используем HAS_MANY связь. Думаю надо в официальном руководстве уделить больше внимания этой теме. При связи MANY_MANY поле разбивается на подполя и для каждого добавляется JOIN. Как будет свободное время опишу весь механизм подробнее.
snn
Сообщения: 7
Зарегистрирован: 2009.12.22, 21:41

Re: sql дерево - Adjacency List

Сообщение snn »

Как только, так сразу выкладывай на хабре
Ответить