2013-01-18 36 views
2

我在YII的項目。我有Production表,其中我有category_idbrand_id兩列。現在我想要做的是,只需使用CActiveDataProvider即可將這些特定行提取到$dataprovider,其中category_idbrand_id位於我的$cat$brnd陣列中。我做了category_id,但我沒有得到任何東西如何把他們兩人的條件。這是我的代碼,請幫忙。如何在CActiveDataProvider的條件上設置多個條件?

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

http://stackoverflow.com/questions/14376856/yii-cdbcommand-create-query可能是我覺得你找 – topher

回答

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那麼你不不需要指定第三個參數(默認爲AND),但是如果您想要OR,如

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

,那麼你需要使用

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

你給了正確的答案,只是我收到了錯誤的標準 - > addInCondition('brand_id',$ brnd,'AND');. 類品牌的對象無法轉換爲字符串(.../framework/db/CDbCommand.php:274)這裏有什麼問題? – user1532043

+0

這是什麼$ brnd? –

+1

謝謝。 :) 有效。 – user1532043