CActiveRecord, updateAll + join
Добавлено: 2011.01.12, 00:17
Есть следующий код
Который формирует такой запрос:
Который соответствено исполняется с ошибкой, так как join не на своем месте.
Причина ошибки в CDbCommandBuilder, createUpdateCommand(строка 268):
Правильно примерно так:
Я не проверял с другими атрибутами CDbCriteria.
Код: Выделить всё
BirthDay::model()->updateAll(array(
'type'=>'inactive',
),array(
'join'=>'left join Salon s on s.Id=t.idSalon',
'condition'=>'s.`birthDay`>:date',
'params'=>array(
':date'=>$start
)
));
Код: Выделить всё
UPDATE `BirthDay` SET `type`=:yp0 left join Salon s on s.Id=t.idSalon WHERE s.`birthDay`>:date
Причина ошибки в CDbCommandBuilder, createUpdateCommand(строка 268):
Код: Выделить всё
$sql="UPDATE {$table->rawName} SET ".implode(', ',$fields);
$sql=$this->applyJoin($sql,$criteria->join);
Код: Выделить всё
$sql="UPDATE {$table->rawName}";
$sql=$this->applyJoin($sql,$criteria->join);
$sql.=" SET ".implode(', ',$fields);