2014-03-04 30 views
0

如何使用CDbCriteria構建如下所示的條件?構建特定條件在Yii中使用CDbCriteria

(
    title LIKE :yc0 
    OR 
    description LIKE :yc0 
    OR 
    tags LIKE :yc0 
) 
AND 
(
    user=:yc1 
    OR 
    user=:yc2 
) 

我想這樣做,僅使用兩個CDbcriteria的方法,即比較()和addSearchCondition()

回答

5

嘗試像下面。我假設你要圍繞LIKE值%通配符:

$Criteria = new CDbCriteria; 

$Criteria->addCondition('title LIKE :value OR description LIKE :value OR tags LIKE :value'); 
$Criteria->addCondition('user = :user1 OR user = :user2'); 

$Criteria->params = array(
    ':value' => '%'.$value.'%', 
    ':user1' => $user1, 
    ':user2' => $user2, 
); 

$YourModels = YourModel::model()->findAll($Criteria); 

或者,如果你想使用addSearchConditioncompare

$value = 'foo'; 
$user1 = 1; 
$user2 = 2; 

$Criteria = new CDbCriteria; 

$Criteria->addSearchCondition('title', $value, true, 'OR', 'LIKE'); 
$Criteria->addSearchCondition('description', $value, true, 'OR', 'LIKE'); 
$Criteria->addSearchCondition('tags', $value, true, 'OR', 'LIKE'); 

$Criteria->compare('user', array($user1, $user2)); 

$YourModels = YourModel::model()->findAll($Criteria); 
+0

我想用addSearchCondition和比較CDbcriteria的方法。你能建議那些解決方案嗎? – rosinghal

+0

我編輯了我的答案。希望有所幫助! – JamesG

+0

謝謝你。它的工作。 :) – rosinghal