2014-02-16 102 views
0

我有两个表如下:Yii的加入与不标准

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


Jobs 
---- 
id 
from 
time 

如何创建一个警予CDbCriteria找到工作这不是发票?

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

+0

您现在尝试过吗? –

+1

您可以使用查询而不使用CDbCriteria。 –

+0

@kumar_v可能否,否则OP在Question中写了一个查询。 –

回答

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可用)溶液。

+0

请检查缩进是否正确。 –

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'); 

这将在发票表中选择那些没有。