我正在尝试弄清楚如何实现以下目标。我找了又找,没有结果。
我在 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
在这种情况下应该有效:
$id = 1;
$modules = Module::whereDoesntHave('sites', function($q) use ($id){
$q->where('site_id', $id);
})->get();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)