我想为我的yii项目做一个搜索功能。我在yii中发现了一个名为addSearchCondition()
的函数,然后我尝试执行搜索函数。
public function actionSearchApp(){
$searchapp = $_POST['searchapp'];
$id = Yii::app()->user->getState('id');
$models = GamesDevelopersApp::model()->findAll('developer_id='.$id);
array('models'=>$models);
foreach($models as $model){
$gametitle = CHtml::encode($model->gametitle);
}
$search = new CDbCriteria();
$search->addSearchCondition($gametitle.'LIKE:'.$searchapp);
$result = GamesDevelopersApp::model()->findAll($search);
print_r($result);
}
错误消息:CDbWriter::addSearchCondition()缺少参数2
对在Yii中执行SQL Like有什么建议吗?或者任何在yii 中执行搜索功能的好例子
更新
public function actionSearchApp(){
$searchapp = $_POST['searchapp'];
$id = Yii::app()->user->getState('id');
$models = GamesDevelopersApp::model()->findAll('developer_id='.$id);
$search = new CDbCriteria();
$search->addSearchCondition('gametitle', $searchapp);
$result = GamesDevelopersApp::model()->findAll($search);
print_r($result);
}
是的,它搜索了,但现在它从gamtitle中搜索所有数据,如何使其成为"where developer_id='id'"
你几乎做到了。这是正确的代码:
$search = new CDbCriteria();
$search->addSearchCondition($gametitle, $searchapp); //this add the condition and escapes it properly
$result = GamesDevelopersApp::model()->findAll($search); //here you pass the criteria
print_r($result)
Samuel Liew的答案是完全错误的,SQL是可注入的。
我成功地尝试了我需要的代码和输出:
还得感谢尼古拉的建议
public function actionSearchApp(){
$searchapp = $_POST['searchapp'];
$id = Yii::app()->user->getState('id');
$models = GamesDevelopersApp::model()->findAll('developer_id='.$id);
$search = new CDbCriteria();
$search->addSearchCondition('gametitle', $searchapp);
$search->addCondition('developer_id='.$id);
$result = GamesDevelopersApp::model()->findAll($search,array('developer_id'=>$id));
print_r($result);
}
对where developer_id='id'
使用addCondition()感谢=)