У меня есть следующий код:Yii: CDbCriteria не заменяет заполнитель значением параметра
$criteria=new CDbCriteria;
$criteria->condition = ' action_id
IN(SELECT action_id FROM action_type WHERE action_name = \'EnableGame\') ';
$criteria->compare('task_id','= '.$taskData->task_id, false, 'AND');
$criteria->compare('value', '= '.$gameData->game_id, false, 'AND');
$enablingActions = TaskActions::model()->findAll($criteria);
compare
В метод task_id
и value
не по сравнению с предоставленными значениями, но, как это не передается в функцию. Вот как Yii переводит SQL запроса кода выше:
Querying SQL: SELECT * FROM "task_actions" "t"
WHERE
((
action_id IN(SELECT action_id FROM action_type WHERE action_name = 'EnableGame'
))
AND (task_id=:ycp0))
AND (value=:ycp1)
Почему я вижу заполнители :ycp0
и ycp1
вместо значения я установил? Спасибо!
Спасибо @ Jon. Позвольте мне еще раз подумать. Я хочу заменить '$ criteria-> compare ('task_id', '='. $ TaskData-> task_id, false, 'AND');' с чем-то вроде '$ criteria-> compare ('task_id', ': task_id ', false,' AND '); $ criteria-> params = array (': task_id', $ taskData-> task_id); 'Это не работает в моем случае, как вы предполагаете. В журнале указано: Недопустимый номер параметра: параметр не определен. Оператор SQL выполнен: SELECT * FROM «task_actions» «t» WHERE ((action_id IN (SELECT action_id FROM action_type WHERE action_name = 'EnableGame')) AND (task_id =: ycp0)) AND (значение =: ycp1). – 0xC0DEGURU