How to Yii SQL Like


How to Yii SQL Like

我想为我的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()感谢=)