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

时间:2013-01-18 05:40:40

标签: php yii criteria

我正在进行YII的项目。我有Production表,其中我有category_idbrand_id两列。现在我想要做的是,只需使用CActiveDataProvider将这些特定行提取到$dataprovidercategory_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']), ) ); 做的,但我没有得到任何关于如何将它们放在条件上的东西。这是我的代码,请帮忙。

{{1}}

1 个答案:

答案 0 :(得分:7)

使用addInCondition of CDbCriteria

$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']),
    )
);

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

category_id IN (x,y,z) AND brand_id IN (a,b,c)

AND则您不需要指定第3个参数(默认为AND),但如果您需要OR,则需要

category_id IN (x,y,z) OR brand_id IN (a,b,c)

然后你需要使用

$criteria->addInCondition('brand_id',$brnd,'OR');