如何为CActiveDataProvider的条件设置多个条件?

use*_*043 2 php criteria yii

我正在进行项目YII.我有Production表,在那里我category_idbrand_id两个列.现在,我想要做的是,只要使用CActiveDataProvider这些特定的行取到$dataprovider它有那些category_idbrand_id$cat$brnd阵列.我做到了category_id,但我没有得到任何东西如何把它们都放在条件上.这是我的代码,请帮忙.

$dataProvider=new CActiveDataProvider(Production::model(),
      array(
     'criteria'=>array('condition' => 'category_id IN ('.implode(',',$cat).')'),
     'pagination' => array('pageSize'=>Yii::app()->params['productsPerPage']),
    )
);
Run Code Online (Sandbox Code Playgroud)

boo*_*dev 7

使用addInConditionCDbCriteria:

$criteria=new CDbCriteria;
$criteria->addInCondition('category_id',$cat,'AND');
$criteria->addInCondition('brand_id',$brnd,'AND');
$dataProvider=new CActiveDataProvider(
    'Production',
    array(
        'criteria'=>$criteria,
        'pagination' => array('pageSize'=>Yii::app()->params['productsPerPage']),
    )
);
Run Code Online (Sandbox Code Playgroud)

最后一个参数addInCondition指定如何将条件附加到现有条件,因此如果需要

category_id IN (x,y,z) AND brand_id IN (a,b,c)
Run Code Online (Sandbox Code Playgroud)

AND你不需要指定第三个参数(默认为AND),但是如果你想要的话OR,就像在

category_id IN (x,y,z) OR brand_id IN (a,b,c)
Run Code Online (Sandbox Code Playgroud)

那你需要用

$criteria->addInCondition('brand_id',$brnd,'OR');
Run Code Online (Sandbox Code Playgroud)