集合验证不起作用 + laravel

Collection validation does not work + laravel

我有一个 $array 大约。超过 100k 个条目。

我使用此代码将数组转换为集合:

$insert_data = collect($array);
// Make a collection to use the chunk method
$chunks = $insert_data->chunk(10000);

这将创建 10 组 10000 条记录。

现在我想验证字段,所以我使用这个代码:

$rules2 = [
    'email.*'    => 'required|email|max:255|unique:users,email',
    'phone.*'    => 'required|min:10|unique:users,phone',
    'password.*' => 'required',
];

$rmsgs = [
    'email.unique' => 'The email has already been taken.',
    'phone.unique' => 'The phone has already been taken.',
];

$validator = Validator::make($array, $rules2, $rmsgs);

if ($validator->fails()) {
    $m = [];
    $m['message'] = '';
    $xx = $validator->errors();
    foreach ($xx->all() as $message) {
        $m['message'] .= $message;
        $m['message'] .= ',';
    }
    $m['message'] = rtrim($m['message'], ",");
    array_push($msg, $m);
    continue;
}
DB::table('users')->insert($chunk->toArray());

现在,此验证在导入文件时不起作用,但它不会在 $msg 数组中抛出任何错误。

我做错了什么?我将一些记录的电子邮件地址留空到 CSV 中,但它没有 return 任何错误。

你必须这样做

$rules2 = [
    '*.email'    => 'required|email|max:255|unique:users,email',
    '*.phone'    => 'required|min:10|unique:users,phone',
    '*.password' => 'required'
];

而且你必须在 cron 作业中完成