从模型中获取在数据透视表中没有条目的所有记录 table Laravel 5
Get all records from Model that do NOT have an entry in pivot table Laravel 5
我正在努力弄清楚如何实现以下目标。我找了又找都没有结果。
我在 Laravel 5 应用程序中有一个枢轴 table,它按预期工作,在各个模型中具有以下功能。
// 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);
我遇到的问题是我希望能够获取所有在相关站点的数据透视 table 中没有关联记录的模块。
任何人都可以指出正确的方向,我如何才能以正确的方式实现这样的目标(我可以想到一些方法,但看起来真的很老套)
提前致谢。
M
从 Module
端开始查询并排除 whereDoesntHave
在这种情况下应该有效:
$id = 1;
$modules = Module::whereDoesntHave('sites', function($q) use ($id){
$q->where('site_id', $id);
})->get();
我正在努力弄清楚如何实现以下目标。我找了又找都没有结果。
我在 Laravel 5 应用程序中有一个枢轴 table,它按预期工作,在各个模型中具有以下功能。
// 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);
我遇到的问题是我希望能够获取所有在相关站点的数据透视 table 中没有关联记录的模块。
任何人都可以指出正确的方向,我如何才能以正确的方式实现这样的目标(我可以想到一些方法,但看起来真的很老套)
提前致谢。 M
从 Module
端开始查询并排除 whereDoesntHave
在这种情况下应该有效:
$id = 1;
$modules = Module::whereDoesntHave('sites', function($q) use ($id){
$q->where('site_id', $id);
})->get();