Yii加入不符合标准

时间:2014-02-16 11:16:51

标签: php mysql yii

我有两张表如下:

Invoices
---------
id 
job_id
amount


Jobs
----
id
from
time

如何创建yii CDbCriteria以获取不在发票中的作业?

如果我有从作业到发票的HAS_MANY关系,如何在搜索功能中添加它?

2 个答案:

答案 0 :(得分:2)

使用SQL

的解决方案
 $items= Yii::app()->db->createCommand( 
               'SELECT * FROM Jobs \
                WHERE Jobs.job_id NOT IN ( \
                           SELECT job_id   \
                           FROM Invoices)')->queryAll();

如果您确实需要使用标准,可以尝试addNotInCondition方法(自v1.1.1开始提供)。

答案 1 :(得分:1)

左连接怎么样?

$criteria->join = 'LEFT JOIN Invoices i ON i.job_id = t.id';
$criteria->addCondition('i.job_id IS NULL');

$criteria->with(array('relationName'));
$criteria->addCondition('relationName.id IS NULL');

这将选择不在发票表中的那些。