2015-10-12 40 views
2

嗨我正在尝试创建yii的搜索功能CDbCriteria每件事情都可以。但是当我输入全名.i.e manoj dhiman我已经将这个保存为db中的firstnamelastname。所以我爆炸搜索的关键,所以我需要一些东西,以便我可以搜索与该阵列的主持人的结果。我的代码是是否有可能在yii中使用IN条件比较

public function actionSearchuser() 
    { 
     $key=$_POST['key']; 
     $data=array(); 
     if($key) 
     { 
      $users=explode(' ',$key); // the users array 
      $model=new Goals; 
      $model->attributes = $_POST['key']; 
      $criteria = new CDbCriteria(); 
      $criteria->with='profile'; 
      $criteria->distinct=true; 

      //$criteria->addInCondition('firstname',$users); 
      $criteria->compare('firstname', $key, true, 'OR'); 
      $criteria->compare('school', $key, true, 'OR'); 
      $criteria->compare('occupation', $key, true, 'OR'); 
      $criteria->compare('location', $key, true, 'OR'); 
      $criteria->compare('lastname', $key, true, 'OR'); 
      $criteria->compare('username', $key, true, 'OR'); 
      $criteria->compare('email', $key, true, 'OR'); 


      $dataProvider=new CActiveDataProvider('User', array(
       'criteria' => $criteria 
     )); 

      $data=$dataProvider->getData(); 
     } 
     $this->renderPartial('Searchuser',array('data'=>$data)); 
    } 

我也试过$criteria->addInCondition('firstname',$users);但是匹配与名称整个键。我想like。怎么可能?

感谢

+0

可能涉及:http://www.yiiframework.com/wiki/610/how-to-create-a-criteria-condition-for-a-multiple-value-text-search- iea-like-in/ –

+1

参考:http://stackoverflow.com/questions/13449410/searching-filtering-two-concatenated-columns-in-cgridview –

+0

@InsaneSkulll谢谢。 – MKD

回答

1

后疯狂头骨的评论我的作品。 $criteria->compare('concat(firstname, " ", lastname)', $key, true, 'OR');reference

public function actionSearchuser() 
    { 
     $key=$_POST['key']; 
     $data=array(); 
     if($key) 
     { 
      $users=explode(' ',$key); 
      $model=new Goals; 
      $model->attributes = $_POST['key']; 
      $criteria = new CDbCriteria(); 
      $criteria->with='profile'; 
      $criteria->distinct=true; 

      //$criteria->addInCondition('firstname',$users); 
      $criteria->compare('firstname', $key, true, 'OR'); 
      $criteria->compare('concat(firstname, " ", lastname)', $key, true, 'OR'); 
      $criteria->compare('school', $key, true, 'OR'); 
      $criteria->compare('occupation', $key, true, 'OR'); 
      $criteria->compare('location', $key, true, 'OR'); 
      $criteria->compare('lastname', $key, true, 'OR'); 
      $criteria->compare('username', $key, true, 'OR'); 
      $criteria->compare('email', $key, true, 'OR'); 


      $dataProvider=new CActiveDataProvider('User', array(
       'criteria' => $criteria 
     )); 

      $data=$dataProvider->getData(); 
     } 
     $this->renderPartial('Searchuser',array('data'=>$data)); 
    }