laravel - 我遇到了一个关于从 laravel eloquent 关系中获取数据的逻辑错误
问题描述
我有两个模型客户端和组。
这是一种多对多关系,其中客户端属于多个组,并且组具有多个客户端。我想获取所有尚未属于某个组的客户端并将其传递给视图。
团体模型:
public function clients() {
return $this->belongsToMany('App\Models\Client', 'client_group', 'group_id', 'client_id');
}
客户型号:
public function documents() {
return $this->belongsToMany('App\Models\Document', 'client_document', 'client_id', 'document_id');
}
GroupsController.php
public function edit($id)
{
$group = Group::find($id);
$clients = Client::all()->where('user_id', Auth::user()->id);
return view('backend.groups.edit', compact('group', 'id', 'clients'));
}
解决方案
如果我理解正确,您需要不属于某个组的客户。本质上,您需要查询关系缺失:
$clients = App\Client::doesntHave('groups')->get();
如果您希望能够添加额外的 where 子句:
use Illuminate\Database\Eloquent\Builder;
...
$clients = App\Client::whereDoesntHave('groups', function (Builder $query) {
$query->where('active', '=', true);
})->get();
有关更多信息,请参阅查询关系
推荐阅读
- html - BeautifulSoup 找不到元素
- c# - 在少数开发人员机器上使用“InProcess”托管模型时,.Net Core 2.2 应用程序找不到 appsettings 路径
- c# - 如何修复“XML 中缺少属性命名空间声明”
- sql - 如何将root第二个父ID添加到oracle表
- python-3.x - 在列表 python 中将第一行作为键(字典)和行的其余部分(值)的最佳方法是什么?
- log4net - 为特定类配置 Log4Net 和过度错误处理
- c++ - 使用 shared_mutex 的内存泄漏
- javascript - 选择使用 javascript es5 更新或推送到数组
- mongodb - OpenShift、MongoDB:无端口转发的连接
- c++ - Arduino TM35 温度传感器错误