2015-04-22 56 views
0

假設Candidates有一個名爲Ratings的字段。 該關聯是可選的。CakePHP 3.0如何包含左外連接

我希望所有的Candidates的評級非0或無評級 並在結果中包含評分。

我設法通過編碼左外獲得了第一部分的權利詢問參加這樣的:

$this->Candidates 
    ->find('all') 
    ->leftJoin(
    ['Ratings' => 'ratings'], 
    [ 
     'Ratings.candidate_id = Candidates.id', 
     'Ratings.rating = 0', 
    ], 
    ['Ratings.rating' => 'integer']) 
    ->where('Ratings.id IS NULL'); 

但是我未能獲得評級結果中包含。如何做到這一點?

回答

0

您是否將contain()添加到查詢中?

$this->Candidates 
    ->find('all') 
    ->contain('Ratings') 
    ->leftJoin(
    ['Ratings' => 'ratings'], 
    [ 
     'Ratings.candidate_id = Candidates.id', 
     'Ratings.rating = 0', 
    ], 
    ['Ratings.rating' => 'integer']) 
    ->where('Ratings.id IS NULL'); 
+0

我沒有,但隨後的'左join'條件被重寫: 'LEFT JOIN等級等級ON(Ratings.candidate_id = Candidates.id AND Ratings.rating = 0)' 變得 'LEFT JOIN評分關於Candidates.id的評級=(Ratings.candidate_id)' –

+0

候選人與評級之間的關係是什麼? –

+0

考生具有一個等級,關係是可選的。 –