laravel 使用具有多对多关系数据透视表的策略
Posted
技术标签:
【中文标题】laravel 使用具有多对多关系数据透视表的策略【英文标题】:laravel using policy with many to many relationship pivot table 【发布时间】:2020-02-23 11:01:12 【问题描述】:您如何在多对多关系中设置策略,因为它使用数据透视表 ||laravel 版本 6|| 示例:MainTable[公司和用户] 数据透视表[company_user]
以视图策略为例:
public function view(User $user,Company $company)
return $user->companys()->company_id == $company->id;
规则:(只有属于公司的用户才能查看) 目前上面的代码不起作用 我在谷歌或它自己的文档中找不到示例,因为大多数示例是 Post 和 User,它们不包含数据透视表 ..
【问题讨论】:
【参考方案1】:您可以结合使用pluck()
和contains()
收集方法。
public function view(User $user, Company $company)
return $user->companys->pluck('id')->contains($conpany->id);
采摘:https://laravel.com/docs/6.x/collections#method-pluck
包含:https://laravel.com/docs/6.x/collections#method-contains
【讨论】:
它正在工作但是,返回 false: 403 此操作未经授权。对所有人,即使用户是公司的成员,仍然返回 false 。以上是关于laravel 使用具有多对多关系数据透视表的策略的主要内容,如果未能解决你的问题,请参考以下文章