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

时间:2015-02-02 09:26:41

标签: laravel eloquent

我有三张桌子,

roles(id, name);
users(id, email, password);
user_role(id, user_id, role_id);

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

我有两个雄辩的模型

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

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

现在,问题是我想添加一个新用户以及我想分配给用户的角色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();

下一步做什么???

1 个答案:

答案 0 :(得分:18)

一切都是described in the documentation

无论如何,这是你如何做到的:

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

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