0
我有以下代碼:的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 ',假'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(value =:ycp1)。 – 0xC0DEGURU