我有以下代码:
$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
而不是我设置的值?谢谢!
答案 0 :(得分:3)
因为占位符被数据库引擎替换为实际值,甚至Yii本身也根本看不到查询的“最终”形式。
但是,有一个选项可以将参数值与查询并排记录:将连接的enableParamLogging
属性设置为true
,并将值记录为相同的消息(它继续“绑定...”)。