Laravel:插入数据透视表

时间:2018-01-06 07:46:25

标签: laravel laravel-5 eloquent pivot-table

我有3张桌子

User(id,name,email)
Role(id,rolename)
role_user(user_id,role_id)

在角色表中,我有以下数据;

id    rolename
1     admin
2     user 

在这种情况下,我将users表与多个关系的角色表相关联。

我有一个雄辩的模型

UserModel
 user_roles(){
belongsToMany('Role')
 }

现在我想在创建用户时在role_user表中保存数据。我在下拉列表中有角色。

我正在使用以下查询

 $user = new User();
 $user->username = $data->username;
 $user->email= $data->email
 $user->save();

它完全将用户保存在用户表中,但我还想将数据保存在user_role表中。

你能帮助我如何保存这个吗?

2 个答案:

答案 0 :(得分:2)

创建用户后使用attach()方法:

$user->roles()->attach($roleId);

答案 1 :(得分:0)

在用户模型中:

public function roles()
{
    return $this->belongsToMany(Role::class);
}

在角色模型中:

public function users()
{
    return $this->belongsToMany(User::class);
}

我假设您将角色作为数组传递,然后在您的控制器中,您可以使用以下内容:

public function store(Request $request)
{
    //return $request->roles;
    $this->validate($request, [
        'name'  => 'required|string',
        'email' => 'required|email|unique:users',
        'password'  => 'required|confirmed'
    ]);

    $user = new User();
    $user->name = $request->name;
    $user->email = $request->email;
    $user->password = $request->password;

    $user->save();

    $user->roles()->attach($request->roles);

    return redirect()->route('backend.users');
}