Laravel在插入新记录时向数据透视表添加数据

Dip*_*ung 21 laravel eloquent

我有三张桌子,

roles(id, name);
users(id, email, password);
user_role(id, user_id, role_id);
Run Code Online (Sandbox Code Playgroud)

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

我有两个雄辩的模型

Role
+users(){
    belongsToMany('User')
}

User
+roles(){
    belongsToMany('Role')
}
Run Code Online (Sandbox Code Playgroud)

现在,问题是我想添加一个新用户以及我想分配给用户的角色ID.如何使用Laravel最佳实践向数据透视表插入值?

我现有的代码是: -

$roles = Input::get('roles'); // arrays of role ids

$user = new User();
$user->username = Input::get('username');
$user->password = Hash::make(Input::get('password'));
$user->save();
Run Code Online (Sandbox Code Playgroud)

接下来做什么???

luk*_*ter 21

它真的都在文档中描述.

无论如何,这是你如何做到这一点:

$user = new User();
$user->username = Input::get('username');
$user->password = Hash::make(Input::get('password'));
$user->save();
$user->roles()->attach($roles);
Run Code Online (Sandbox Code Playgroud)

重要的是您必须在附加角色之前保存用户,否则用户没有在数据透视表中使用的ID.

  • 只是为了澄清,括号很重要!``$ user-> roles()```NOT``` $ user-> roles``` (3认同)