gpt4 book ai didi

php - Laravel 表单请求 : how to avoid n+1 queries when validating arrays?

转载 作者:行者123 更新时间:2023-12-04 03:37:37 25 4
gpt4 key购买 nike

我想知道验证包含很多元素的数组时的最佳方法。

例如,

    <?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Request;

class UsersRolesAssignmentRequest extends FormRequest
{
public function rules(Request $request)
{
return [
'roles' => 'array|min:1',
'roles.*.role_id' => 'required|exists:roles',
'roles.*.user_id' => 'required|exists:users'
];
}
}

这里的问题是,如果我有 100 个元素,我将需要访问数据库 200 次。

最佳答案

我不确定它是否对数据库进行了 200 次检查,这似乎是一个相当大的疏忽。但是,如果是,您可以使用 in() 规则,以及一些预取的结果:

public function rules(Request $request){
$roleIds = Role::pluck('id')->implode(',');
$userIds = User::pluck('id')->implode(',');
return [
'roles' => 'array|min:1',
'roles.*.role_id' => "required|in:{$roleIds}",
'roles.*.user_id' => "required|in:{$userIds}"
];
}

请不要忘记通过use App\Models\User;use App\Models\Role(或您的模型所在的任何路径)导入您的模型.

此规则将生成以下内容:

'roles.*.role_id' => 'required|in:1,2,3,4,5', // ... 
'roles.*.user_id' => 'required|in:1,2,3,4,5

关于php - Laravel 表单请求 : how to avoid n+1 queries when validating arrays?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66588874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com