Reputation: 161
How can I build condition like the one below with CDbCriteria?
(
title LIKE :yc0
OR
description LIKE :yc0
OR
tags LIKE :yc0
)
AND
(
user=:yc1
OR
user=:yc2
)
I want to do this using only two methods of CDbcriteria, ie, compare() and addSearchCondition()
Upvotes: 0
Views: 3704
Reputation: 1698
Try something like the below. I'm assuming you'll want %
wildcards around the LIKE value:
$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);
Or, if you want to use addSearchCondition
and compare
:
$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);
Upvotes: 5