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 关系

Eloquent 中与分类学的多对多关系

Laravel Eloquent 多对多 [编辑]

从 Laravel 中的多对多关系获取列值

laravel 返回与 eloquent 和 laravel 的关系

检查 belongsToMany 关系是不是存在 - Laravel