【问题标题】:How to set multiple condition on criteria for CActiveDataProvider?如何为 CActiveDataProvider 设置多个条件?
【发布时间】:2013-01-01 19:35:42
【问题描述】:

我正在进行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']),
    )
);

【问题讨论】:

标签: php yii criteria


【解决方案1】:

使用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那么你不需要指定第三个参数(默认是AND),但如果你想要OR,如

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

那么你需要使用

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

【讨论】:

  • 我想你已经给出了正确的答案,只是我得到了标准的错误->addInCondition('brand_id',$brnd,'AND');。 Brand 类的对象无法转换为字符串 (.../framework/db/CDbCommand.php:274) 这里有什么问题?
  • 对不起,那是我的错误,必须是 $brans_id
猜你喜欢
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
  • 2020-06-22
  • 1970-01-01
  • 2014-01-16
  • 1970-01-01
  • 2018-10-24
相关资源
最近更新 更多