mad*_*tuk 2 php mysql pivot-table laravel 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');
}
Run Code Online (Sandbox Code Playgroud)
我可以使用Sitecontroller.php中的以下内容检索所有相关记录
$site = Site::with('modules')->findOrFail($id);
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我希望能够获得相关站点的数据透视表中没有关联记录的所有模块.
任何人都可以指出正确的方向我如何以正确的方式实现这样的事情(我可以想到几个方面,但似乎真的很hacky)
提前致谢.中号
从Module侧面开始查询并排除,whereDoesntHave在这种情况下应该起作用:
$id = 1;
$modules = Module::whereDoesntHave('sites', function($q) use ($id){
$q->where('site_id', $id);
})->get();
Run Code Online (Sandbox Code Playgroud)