我正在进行YII
的项目。我有Production
表,其中我有category_id
和brand_id
两列。现在我想要做的是,只需使用CActiveDataProvider
将这些特定行提取到$dataprovider
,category_id
和brand_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}}
答案 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');