按company_id筛选Laravel关系



我正在做一个具有自定义权限功能的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');
}

And in controller:

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相关。

有人知道我怎么得到这个结果吗?

欢迎提出任何意见。

谢谢你。

可以使用include进行查询,将键值语法作为参数。在BelongsToMany中,它与透视表内连接,这使得在comapny_id上添加条件成为可能。

return User::with(['permissions' => function ($query) use ($company) { 
$query->where('user_has_permission.company_id', $company->id);
}])->find($id);

相关内容

  • 没有找到相关文章

最新更新