2

我有一个控制器函数,它根据某些列名(created_user_id、status_id、company_id)准备条件。记录是从表中获取的jobs,如果满足某些条件,我们必须获取更多带有特定的行job_id。示例如下。

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

我怎样才能用findAllByAttributesOR写这个条件findAll?我试过了CbCriteria;但我不知道如何将这个 AND 和 OR 条件结合在一起。任何帮助都感激不尽。

4

2 回答 2

1

尝试使用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);
于 2015-11-03T04:58:39.077 回答
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));
于 2015-11-03T05:39:22.657 回答