3

のプロジェクトに参加していYIIます。私が持っているProductionテーブルcategory_idbrand_id2つの列があります。今私がやりたいことは、 を使用して、CActiveDataProviderそれらの特定の行を にフェッチし、それらを$dataprovider持っていると配列に入れることです。用に作ったのですが、両方を条件に入れる方法がわかりません。これが私のコードです。助けてください。category_idbrand_id$cat$brndcategory_id

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

1 に答える 1

8

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

の最後のパラメーターは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');
于 2013-01-18T06:17:18.363 に答える