Всем привет.
Возникла проблема при склеивании таблиц.
Есть модель 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.
Но если не делать объединения, то подстановка имени таблицы происходит без проблем.
Подскажите, пожалуйста.
И если можно, объясните принцип работы с алиасами, в документашке не очень раскрыто.