CActiveDataProvider无法解决标准中的参数

时间:2012-05-05 03:32:14

标签: php yii

我正在跟随Agile Web Application Development with Yii 1.1 and PHP5跟进“TrackStar”项目。对于我的生活,我无法理解我的问题所在。 我得到了例外:

  

CDbCommand无法执行SQL语句:SQLSTATE [HY093]:参数号无效:未定义参数。执行的SQL语句是:SELECT COUNT(*)FROM tbl_issue t WHERE project_id =:projectId

看来(对于这个noob的解释)我的CActiveDataProvider中的params是一些如何不在视图中解析的标准:

(in /protected/controllers/ProjectController.php)

55         public function actionView()
56         {
57             $issueDataProvider = new CActiveDataProvider('Issue', array(
58                 'criteria' => array(
59                     'condition' => 'project_id=:projectId',
60                     'params' => array(':projectId=' => $this->loadModel()->id),
61                 ),
62                 'pagination' => array( 
63                     'pageSize' => 1,
64                 ),      
65             )); 
66             $this->render('view',array(
67                     'model'=>$this->loadModel(),
68                     'issueDataProvider' => $issueDataProvider,
69             ));
70         }

我针对github repo检查了我的代码,我在任何地方都找不到任何差异。 有没有直截了当的东西我在这里没有发布我的所有代码(并且有人真正透过它)?

1 个答案:

答案 0 :(得分:3)

看起来你的标准参数有错误。 (=之后:projectId)。 正确的陈述是

   'params' => array(':projectId' => $this->loadModel()->id),

Params数组是由参数占位符索引的查询参数值列表。例如,array(':name'=>'Dan',':age'=> '31')。