Объединения и алиасы ?? в запросах

Всем привет.

Возникла проблема при склеивании таблиц.

Есть модель Show, отвечает за вывод сущностей.

Есть сущность Trends, она связана с моделью Show таким правилом


  'show' => array( self::HAS_ONE, 'Show', 'issue_id', 'condition'=>'??.alias="'.$this->tableName().'"')

Внутри контроллера я выбираю данные из Trends таким образом


$trend = Trends::model()->with('show')->find('??.alias=:alias', array('alias'=>$type));

На что мне валится ошибка.

Description


CDbCommand failed to execute the SQL statement: SQLSTATE[42000]: Syntax error or access violation: 

1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version 

for the right syntax to use near '??.alias='tyres') AND (t1.alias="trends")' at line 1

И дебаг запроса


system.db.CDbCommand.query(SELECT `trends`.`id` AS `t0_c0`, `trends`.`name` AS `t0_c1`, `trends`.`alias` 

AS `t0_c2`, t1.`id` AS `t1_c0`, t1.`alias` AS `t1_c1`, t1.`issue_id` AS `t1_c2`, t1.`site_id` AS `t1_c3`, 

t1.`city_id` AS `t1_c4` FROM `trends` LEFT OUTER JOIN `show` t1 ON (t1.`issue_id`=`trends`.`id`) WHERE 

(??.alias=:alias) AND (t1.alias="trends"))

Если не ставить в condition запроса ?? то случается ошибка с 1052 Column ‘alias’ in where clause is ambiguous.

Но если не делать объединения, то подстановка имени таблицы происходит без проблем.

Подскажите, пожалуйста.

И если можно, объясните принцип работы с алиасами, в документашке не очень раскрыто.

Если версия фреймворка из ветки 1.1.x то выборку данных из Trends попробуйте осуществить следующим образом:




$trend = Trends::model()->with('show')->find('t.alias=:alias', array('alias'=>$type));



Обратите особое внимание на алиас t. Почему t лучше уточнить в документации. Но в любом случае всё должно работать. Что касается плейсхолдера ?? в области параметров метода find(), он так не используется ни сейчас, ни в более старых версиях. В relations() можно, тут нет.