首页 > 解决方案 > 如何在多对多关系laravel中使用条件?

问题描述

我有三个模型公司,用户,项目

companies:
id, name
users: 
id, name
projects: 
id, title, company_id

数据透视表

project_members: 
id, user_id, project_id

用户项目的关系是多对多的。
如何让所有具有特殊 user_id 的项目都加入到项目中。

这是我的代码获取列表项目用户未加入但不是预期的:

$project = Project::with(['company', 'users'])
               ->whereHas('users', function ($query) use ($user) {
                   $query->where('id', '!=', $user->id);
               });

我希望你能帮助我并解释如何在 Laravel 中使用with , whereHas

标签: laravelrelationship

解决方案


Project::with(['users' => function($q)]) 加载所有项目和满足子查询的用户。在这种情况下,所有项目和具有所选 ID 的用户(如果存在)

并且 Project::whereHas('users', function($q) {}) 仅加载满足用户子查询的项目,在您的情况下:分配给具有所选 id 的用户的项目


推荐阅读