如何return所有插入的批量数据Laravel?

How to return all inserted bulk data Laravel?

我在 Laravel 中使用批量插入:

return User::create($user);

其中 $user 是行数组。

如何return成功插入行作为数组?

现在它 return 只是最后插入的模型。

完整代码为:

public function register(Request $request)
{

    foreach ($request->email as $key => $value) {
        $hashed = Hash::make($key);
        $user = [
            "name" => $request->get('name')[$key],
            "email" => $value,
            "password" => $hashed,
        ];
    }

    return User::create($user);
}

我可以执行以下操作吗?

public function register(Request $request)
{

    foreach ($request->email as $key => $value) {
        $hashed = Hash::make($key);
        $user = [
            "name" => $request->get('name')[$key],
            "email" => $value,
            "password" => $hashed,
        ];
    }

    try {
       User::create($user);
       return $user;
     } catch ($e) {
     }
}

我认为这可行:

public function register(Request $request)
{
    $created = [];
    foreach ($request->email as $key => $value) {
        $hashed = Hash::make($key);
        $user = [
            "name" => $request->get('name')[$key],
            "email" => $value,
            "password" => $hashed,
        ];
        $created[] = User::create($user);
    }
    return $created;
}

或者如果你想使用批量插入,你必须 select 之后插入模型,像这样:

public function register(Request $request)
{
    $users = [];
    foreach ($request->email as $key => $value) {
        $hashed = Hash::make($key);
        $users[] = [
            "name" => $request->get('name')[$key],
            "email" => $value,
            "password" => $hashed,
        ];
    }

    if(User::insert($users))
    {
        return User::whereIn('email', array_column($users, 'email'))->get();
    }

    return 'error';
}