如何将CDbWriter中的IN子句与Yii中的CActiveDataProvider一起使用


How to use IN clause in CDbCriteria with CActiveDataProvider in Yii?

这是我的工作代码,没有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)),
       ),


请帮我解决我的问题,提前谢谢!

你可以这样做

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

[已关闭]我从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论坛