Условия `AND` и` OR` вместе в `Yii« ActiveRecord` `findAllByAtributes`

У меня есть функция контроллера, которая подготавливает условие в зависимости от некоторых имен столбцов (созданный_пользователь_идентификатора, статусный_идентификатор, идентификатор_компании). Запись извлекается из таблицы jobs и если выполняется какое-то условие, мы должны получить еще несколько строк с конкретными job_id, Пример приведен ниже.

(created_user_id = 123 AND status_id = 15 AND company_id = 400 ) OR (job_id IN (18,22,34) )

Как я могу написать это условие с findAllByAttributes ИЛИ используя findAll ? Я пробовал с CbCriteria; но я понятия не имею, как совместить это И и ИЛИ условие вместе. Любая помощь будет высоко ценится.

2

Решение

Попробуйте использовать addInCondition

Например,

$criteria->condition(('created_user_id = 123 AND status_id = 15 AND company_id = 400', 'OR');
$criteria->addInCondition('job_id ', array('18','22','34'));
$relation_models = Relation::model()->findAll($criteria);
1

Другие решения

Есть несколько способов:

$criteria = new CDbCriteria;
$criteria->condition = '(created_user_id = 123 AND status_id = 15 AND company_id = 400) OR (job_id IN (18,22,34)))';
$models = TableName::model()->findAll($criteria);

Или же,

$models = TableName::model()->findAll('column=:t4 OR something IN (2,4,6,7)', array(':t4'=>1));
1

По вопросам рекламы [email protected]