简体   繁体   中英

Insert/Update multiple records in one Eloquent Laravel query

What would be the cleanest way to process new user with roles creation and update? I got Users and Roles tables with relationships: $this->belongsToMany(Role::class). When I am creating a new user, in the same form I would like to assign role(s), but roles will be added into different table. And the same for when I would update the user, maybe I will add a additional role or I maybe I will need to remove some roles, In update scenario I would need to see what roles there are in the table and sync that with the form data. Below is a function updating user and Role information. The user update works but the Role update doesn't. What would the cleanest code to: Create a new user with one or more roles and to update user information and sync the role information.

public function update($id, Requests\CreateUserRequest $request) {
    $user=User::findOrFail($id);
    $user->name=$request->name;
    $user->email=$request->email;
    if($request->resetPassword)
    {
        $user->password=null;
        //send email to user to reset the password
    }
    $user->save();
    $roles=Role::sync($request->roles);
    $roles->user()->update($user->id);

    //$user->update($request->all());
    flash('Great!! User was updated', 'success');
    return redirect('users');
}

To update the roles you can try as:

$user->save();
$user->roles()->sync($request->roles);

It will work for both update and create.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM