Конфликт имен при попытке организовать relations MANY_MANY

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
CandyDandy
Сообщения: 33
Зарегистрирован: 2012.01.09, 15:13

Конфликт имен при попытке организовать relations MANY_MANY

Сообщение CandyDandy »

Ошибка: CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: 
Integrity constraint violation: 1052 Column 'id' in order clause is ambiguous. The SQL statement executed was: 

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

SELECT `t`.`id` AS `t0_c0`, `t`.`name` AS `t0_c1`, `categories`.`id` AS `t1_c0`, `categories`.`name` AS `t1_c1`, 
`categories`.`alt` AS `t1_c2`, `categories`.`left_key` AS `t1_c3`, `categories`.`right_key` AS `t1_c4`, `categories`.
`level` AS `t1_c5`, `categories`.`root` AS `t1_c6` FROM `admin` `t` LEFT OUTER JOIN `Admin2category` 
`categories_categories` ON (`t`.`id`=`categories_categories`.`admin_id`) LEFT OUTER JOIN `category` 
`categories` ON (`categories`.`id`=`categories_categories`.`category_id`) ORDER BY id ASC
судя по ошибке ему не нравится ORDER BY id ASC и следовало бы его заменить например на t.id
пробую делать по документации перекрыть id следующим образом

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

Admins::model()->with('categories')->findAll(array(
            'order' => 'id, t.id'
        ));
Но в итоге колонка в условие просто добавляется, а не перекрывает

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

...ORDER BY id, t.id id ASC
Что можно еще сделать?
esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: Конфликт имен при попытке организовать relations MANY_MA

Сообщение esche »

Вторую таблицу тоже указать.

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

ORDER BY `categories`.id, `t`.id id ASC
...
Аватара пользователя
CandyDandy
Сообщения: 33
Зарегистрирован: 2012.01.09, 15:13

Re: Конфликт имен при попытке организовать relations MANY_MA

Сообщение CandyDandy »

помогло в итоге

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

        $roots = Admins::model()->with('categories')->findAll(array(
            'select' => 't.id AS id'
        ));
Аватара пользователя
CandyDandy
Сообщения: 33
Зарегистрирован: 2012.01.09, 15:13

Re: Конфликт имен при попытке организовать relations MANY_MA

Сообщение CandyDandy »

А джоин как можно перекрыть?
Нужно к первому добавить дополнительное условие стыковки - 'and categories_categories.admin_id = 1'
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: Конфликт имен при попытке организовать relations MANY_MA

Сообщение TM123 »

Наверное никак, более того многие базы не поддерживают когда вяжут более чем по одному условию и требуют остальные условия указывать в where запроса.
esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: Конфликт имен при попытке организовать relations MANY_MA

Сообщение esche »

CandyDandy писал(а):А джоин как можно перекрыть?
Нужно к первому добавить дополнительное условие стыковки - 'and categories_categories.admin_id = 1'
http://yiiframework.ru/doc/guide/ru/database.arr раздел "Параметры реляционного запроса".

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

'on'=>'categories_categories.admin_id = 1',
//или 'condition'=>..  
...
Ответить