Laravel eloquent 检查不存在的多对多关系
Posted
技术标签:
【中文标题】Laravel eloquent 检查不存在的多对多关系【英文标题】:Laravel eloquet check non existing many to many relation 【发布时间】:2022-01-12 12:08:31 【问题描述】:我在 laravel eloquent ORM 中编写查询时遇到了麻烦。
我有一个项目表,您可以在其中以多对多关系分配用户
在分配用户的视图中,我有一个选择器,但我只想显示尚未分配给项目的用户,并检查用户是否属于创建项目的公司 (user.company_id=proyect_id)
在正常查询中,我应该像这样,从控制器获得 $company_id 和 $proyect_id。
select * from users u left join proyect_user pu on u.id=pu.user_id and pu.proyect_id = $proyect_id 其中 u.company_id=$company_i 和 proyect_id 为空;
查询有效,但我想使用 Eloquent。 ¿ 知道怎么做吗?
【问题讨论】:
【参考方案1】:这取决于您如何在 User 模型中声明关系。但我会做这样的事情:
$users = User::whereHas('company', function ($query) use ($companyId)
$query->where('id', $companyId)
)->whereDoesntHave('proyects', function ($query) use ($proyectId)
$query->where('id', $proyectId);
)->get();
【讨论】:
以上是关于Laravel eloquent 检查不存在的多对多关系的主要内容,如果未能解决你的问题,请参考以下文章
与多个中间表的多对多 Laravel Eloquent 关系