Вы можете использовать операторы IN и BETWEEN через CDbCriteria:
$criteria = new CDbCriteria();
$criteria->addInCondition("id", array(6,7,8,9));
$criteria->addBetweenCondition('id', '10', '20', 'OR');
$result = User::model()->findAll($criteria);
это приведет к тому, что запрос SQL будет выглядеть так:
SELECT *
FROM `User`
WHERE `id`
IN ( 6, 7, 8, 9 )
OR `id` BETWEEN 10 AND 20
Обратите внимание на 4-й параметр ИЛИ в addBetweenCondition () ; если его пропустить, то по умолчанию AND будет применено для объединения этого условия с остальной частью WHERE-запроса.
P.S. Строго говоря, эти методы addBetweenCondition()
и addInCondition()
должны быть добавлены к существующему условию. Итак, вам может понадобиться сначала установить начальное условие критерия, например:
$criteria->condition = '1=1';