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;
}
我在请求中遇到问题,在该请求中我使用了关于 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;
}