[英]Get all records from Model that do NOT have an entry in pivot table Laravel 5
我試圖弄清楚如何實現以下目標。 我搜索了,搜索都沒有用。
我在Laravel 5應用程序中有一個數據透視表,該數據透視表按預期工作,並且在各個模型中具有以下功能。
// Module.php
//...
public function sites()
{
return $this->belongsToMany('App\Site')->withPivot('enabled');
}
// Site.php
//...
public function modules()
{
return $this->belongsToMany('App\Module')->withPivot('enabled');
}
我可以在Sitecontroller.php中使用以下內容檢索所有相關記錄
$site = Site::with('modules')->findOrFail($id);
我遇到的問題是,我希望能夠獲取所涉及站點的數據透視表中沒有相關記錄的所有模塊。
任何人都可以指出正確的方向,說明我如何以正確的方式實現這樣的目標(我可以想到一些方法,但看起來確實很笨拙)
提前致謝。 中號
在這種情況下,從Module
端開始查詢,並使用whereDoesntHave
排除是whereDoesntHave
:
$id = 1;
$modules = Module::whereDoesntHave('sites', function($q) use ($id){
$q->where('site_id', $id);
})->get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.