Laravel 关系过滤器按 company_id
Posted
技术标签:
【中文标题】Laravel 关系过滤器按 company_id【英文标题】:Laravel relationship filter by company_id 【发布时间】:2021-12-15 09:09:25 【问题描述】:我正在做一个具有自定义权限功能的 laravel api。 这是我的表格结构:
User
id | email | password
Company
id | companyName
Permissions
id | name
User_has_permissions
user_id | company_id | permission_id
我在模型中使用以下代码获取用户和权限:
public function permissions()
return $this->belongsToMany(Permission::class, 'user_has_permission', 'user_id', 'permission_id');
在控制器中:
public function show($company_id, $user_id)
//now I need return only permissions related with $company_id
return User::with(['permissions'])->find($User_id);
现在,我需要获取用户和您的权限,但仅与 company_id 相关。
有人知道我怎样才能得到这个结果吗?
欢迎提出任何想法。
非常感谢。
【问题讨论】:
【参考方案1】:您可以通过将键值语法作为参数进行查询。在BelongsToMany
中,它与数据透视表进行内部连接,这样就可以在comapny_id
上添加条件。
return User::with(['permissions' => function ($query) use ($company)
$query->where('user_has_permission.company_id', $company->id);
])->find($id);
【讨论】:
未测试,所以测试一下看看是否有帮助:)以上是关于Laravel 关系过滤器按 company_id的主要内容,如果未能解决你的问题,请参考以下文章
Laravel - 按“字段及其关系模型字段”之间的条件过滤模型