2014-02-16 46 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'); 

這將在發票表中選擇那些沒有。