2014-09-11 37 views
0

這是我工作的代碼,而無需IN子句條件 -
如何在Yii中使用CDbCriteria中的IN子句和CActiveDataProvider?

$dataProvider = new CActiveDataProvider('UserInfo', 
     array('id'=>'user-detail', 
      'sort'=>array('defaultOrder'=>'id DESC', 
        'attributes'=>array('id', 'fname', 'lname', 'city') 
      ), 
     'criteria' => array(
       'condition' => 'Staus=:Staus', 
       'params' => array(':Staus' => 1), 
      ), 
     'pagination'=>array 
      (
       'pageSize'=>10) 
      ) 
     ); 




現在我也想在條件中使用IN子句,如何使用? 我想這樣的,但得到的錯誤 - 陣列字符串轉換

'criteria' => array(
      'condition' => 'Staus=:Staus, id=:id', 
      'params' => array(':Staus' => 1, ':id' => array(1,4,10,15,20)), 
     ), 


請幫我解決我的問題,在此先感謝!

回答

0

[關閉] 我碰到的Yii論壇了答案 -

$criteria = new CDbCriteria(); 
$criteria->addColumnCondition(array('Staus'=>1)); 
$criteria->addInCondition('id', array(1,4,10,15,20)); 

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


它的工作非常適合我:)。 。

致謝 - Yii forum

1

你可以這樣做

$criteria=new CDbCriteria(); 
    $criteria->compare('Staus',1); 
    $criteria->addInCondition('id',array(1,4,10,15,20)); 

    $dataProvider = new CActiveDataProvider('UserInfo', 
    array('id'=>'user-detail', 
     'sort'=>array('defaultOrder'=>'id DESC', 
       'attributes'=>array('id', 'fname', 'lname', 'city') 
     ), 
    'criteria' => $criteria, 
    'pagination'=>array 
     (
      'pageSize'=>10) 
     ) 
    ); 
+0

謝謝你:)但爲什麼要用'$ criteria->比較('Staus',1)'? – 2014-09-11 12:38:01

+0

它與條件相同,只是更整齊。 – anwerj 2014-09-11 12:57:54