2015-09-23 119 views
1

我正在努力弄清楚如何使用這個SQL與雄辯的方法。Laravel雄辯 - 「whereNotIn」使用子查詢?

SELECT * FROM artists WHERE artists.id NOT IN 
(SELECT artist_id FROM artist_issues WHERE issue = 'update_images') 

我看到「whereNotIn」方法採用列,然後陣列作爲第二個參數,所以它不可能通過子查詢。

任何想法我可以做到這一點?

謝謝。

回答

0

假設你已經設置了正確的關係,應該是這樣的:

$artists = Artist::whereHas('artist_issues', function(q) { 
    $q->where('issue', '<>', 'update_images'); 
}); 

我猜你有你的Artist模型是這樣的:

public function artist_issues() 
{ 
    return $this->belongsTo('App\ArtistIssue'); 
} 
+0

謝謝你,所以從我可以理解,whereHas方法在where語句中創建子查詢,但那麼「<>」代表什麼? –

+0

這是SQL的「不同的」操作數。 – Amarnasan

+0

好吧,我還不確定這是否是正確的解決方案,我們現在可以忘記子查詢的where語句。如果我只是想擁有一個像這樣的聲明 - 「沒有在(SELECT artist_id FROM artist_issues)」,那麼我看不出「whereHas」代表什麼? 乾杯! –