У меня есть функция контроллера, которая подготавливает условие в зависимости от некоторых имен столбцов (созданный_пользователь_идентификатора, статусный_идентификатор, идентификатор_компании). Запись извлекается из таблицы 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
; но я понятия не имею, как совместить это И и ИЛИ условие вместе. Любая помощь будет высоко ценится.
Попробуйте использовать 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);
Есть несколько способов:
$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));