我有两张表如下:
Invoices
---------
id
job_id
amount
Jobs
----
id
from
time
如何创建yii CDbCriteria以获取不在发票中的作业?
如果我有从作业到发票的HAS_MANY
关系,如何在搜索功能中添加它?
答案 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');
这将选择不在发票表中的那些。