使用“user-> id”之外的东西创建Laravel授权策略

时间:2017-04-26 01:46:28

标签: php laravel

我想创建一个Laravel授权策略,而不是检查user->id我想检查相关用户的业务模型(如$user->business()->id

我尝试在OrderPolicy中使用以下内容,但它不起作用。

OrderPolicy

class OrderPolicy
{
    ....
    public function edit(User $user, Order $order)
    {
        if ($user->business()->id === $order->business_id) {
            return true;
        }
    }    
}

刀片

...
@can('edit', $business->orders())
Edit Link
@endcan
...

有人可以告诉我如何正确地做到这一点吗?

1 个答案:

答案 0 :(得分:0)

假设business()是一种关系方法。

$user->business->id将是与用户相关的商业模式的id

可能想要先检查->business是否为空。

如果您不想加载该关系,也可以直接查询关系。 $user->business()->where('id', $order->business_id)->exists()

Laravel 5.4 Docs - Eloquent - Relationships - Relationship Methods vs Dynamic Properties