【问题标题】:Insert/Update multiple records in one Eloquent Laravel query在一个 Eloquent Laravel 查询中插入/更新多条记录
【发布时间】:2017-03-12 09:21:14
【问题描述】:

通过创建和更新角色来处理新用户的最简洁方式是什么? 我得到了具有关系的用户和角色表:$this->belongsToMany(Role::class)。 当我创建一个新用户时,我想以相同的形式分配角色,但角色将被添加到不同的表中。当我更新用户时也是如此,也许我会添加一个额外的角色,或者我可能需要删除一些角色,在更新场景中,我需要查看表中有哪些角色并将其与表单同步数据。 下面是一个更新用户和角色信息的函数。用户更新有效,但角色更新无效。 什么是最干净的代码: 创建具有一个或多个角色的新用户,并更新用户信息和同步角色信息。

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');
}

【问题讨论】:

  • 为什么不使用事件来设置注册时的默认角色?

标签: php laravel eloquent


【解决方案1】:

要更新角色,您可以尝试:

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

它适用于更新和创建。

【讨论】:

  • 效果很好,只需要确保 $request->roles 返回一个数组。
  • 乐于助人:D ...是的,它应该是一个数组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 2013-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-16
相关资源
最近更新 更多