laravel - Laravel 关系过滤器按 company_id
问题描述
我正在做一个具有自定义权限功能的 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 相关。
任何人都知道我怎样才能得到这个结果?
欢迎任何想法。
非常感谢。
解决方案
您可以通过将键值语法作为参数进行查询。在BelongsToMany
中,它与数据透视表进行内部连接,这样就可以在comapny_id
.
return User::with(['permissions' => function ($query) use ($company) {
$query->where('user_has_permission.company_id', $company->id);
}])->find($id);
推荐阅读
- python - 如何以编程方式关闭 dumpmaster (mitmproxy)?
- html - 当我从 IE5 模拟到 IE7 或更高版本的 Web 应用程序时,为什么我的 offsetheight 和 offsetwidth 值会有所不同?
- roku - 如何在brightscript中获得互联网速度
- python - 如何使用环境变量覆盖python配置
- java - Web 元素之间的等待时间 [Webdriverwait Selenium]
- html - 我必须设置打印布局。材料超出 A4 页
- javascript - 带 foreach 的循环插入
- kubernetes - 改变 Kubernetes 工作的形象
- amazon-s3 - 如何使用 Kafka connect s3 sink 连接器标记 S3 存储桶对象
- python - 如何选择一组行而不是单行?