我是yii世界的一个完全新手,尽我所能尽力学习框架,同时阅读Yii上的书 - “使用Yii和PHP进行Web应用程序开发”通过 Jeffrey Winesett ,
我遇到了:
'params'=>array(':projectId'=>$this->_project->id)
如果有人读过这本书,有人可以解释为什么我们使用:projectId 为什么不直接 projectId ? ':'代表什么?是特定语法还是特定于php的内容。
这是确切的代码:
public function actionIndex()
{
$dataProvider=new CActiveDataProvider('Issue', array(
'criteria'=>array(
'condition'=>'project_id=:projectId',
'params'=>array(':projectId'=>$this->_project->id),
),
));
$this->render('index',array(
'dataProvider'=>$dataProvider,
));
}
任何答案都将受到高度赞赏。 问候。
答案 0 :(得分:4)
“:”id用于标识条件字符串中的param。这是一种将params安全地绑定到sql语句的方法。
在您的情况下,当您指定此条件时
project_id=:projectId
在你的数据库模式中,Yii知道project_id是一个整数,然后当你用以下命令绑定param:
'params'=>array(':projectId'=>$this->_project->id),
Yii将确保绑定一个整数并为其编写SQL语句并生成如下所示的SQL语句:project_id=26
这与字符串ex。:
相同 'criteria'=>array(
'condition'=>'name=:myname',
'params'=>array(':myname' => 'Ronald McDonald'),
),
那么这个条件的sql语句将是name='Ronald McDonald'