Laravel 请求接收数组的策略

Laravel Policy on Request receiving a array

我在请求中遇到问题,在该请求中我使用了关于 authorize() 方法的策略。它从输入请求中接收一个 ID 数组,然后我使用它从数据库中获取这些 ID,并且我必须确认其中一个记录中名为 seller_id 的字段是否与登录的用户匹配。如果是这样,o 必须 return false 并且我无法继续执行该作业,否则我将继续执行。不确定我是否可以将该数组作为参数传递,所以我尝试了以下选项,但它不起作用。有什么建议吗?

根据请求

public function authorize()
    {
        //return true;
        $tickets = Ticket::find(request()->input('tickets_ids'))->get();
        foreach($tickets as $ticket){
            return request()->user()->can('buyTicket', $ticket);
        }


    }

关于政策

public function buyTicket(User $user, Ticket $ticket){
        if($user->id !== $ticket->seller_id){
            return true;
        }
        return false;
    }

修改您的请求,使其仅在当前用户无法购买机票时中止循环。否则,函数结束时 return 为真。

public function authorize()
{
    $tickets = Ticket::findMany(request()->input('tickets_ids', []))->get();

    foreach ($tickets as $ticket) {
        $userCanBuyTicket = request()->user()->can('buyTicket', $ticket);

        if (!$userCanBuyTicket) {
            return false;
        }
    }

    return true;
}