【问题标题】:CActiveDataProvider not resolving params in criteriaCActiveDataProvider 没有解析标准中的参数
【发布时间】:2012-05-05 12:37:04
【问题描述】:

我与Agile Web Application Development with Yii 1.1 and PHP5 一起致力于“TrackStar”项目。对于我的生活,我无法理解我的问题在哪里。 我得到了例外:

CDbCommand 执行 SQL 语句失败:SQLSTATE[HY093]: Invalid parameter number: parameter was not defined。执行的 SQL 语句为:SELECT COUNT(*) FROM tbl_issue t WHERE project_id=:projectId

看来(对于这个菜鸟的解释)我的 CActiveDataProvider 中的参数在标准中无法像视图中那样解析:

(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 检查了我的代码,但在任何地方都找不到任何差异。 是否有一些简单的东西我在这里错过了,而不必发布我的所有代码(并让有人真正查看它)?

【问题讨论】:

    标签: php yii


    【解决方案1】:

    您的标准参数似乎有误。 (= 在 :projectId 之后)。 正确的说法是

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

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

    【讨论】:

    • 天啊...一整天。谢谢你.. :)
    猜你喜欢
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多