如何在Yii中使用CDbCriteria中的IN子句和CActiveDataProvider?

时间:2014-09-11 11:27:38

标签: php yii controller

这是我的工作代码,没有IN子句条件 -

   $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)),
       ),


请提前帮助我解决我的问题!

2 个答案:

答案 0 :(得分: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)
        )
    );

答案 1 :(得分: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