Laravel 在插入新记录时将数据添加到数据透视表 table

Laravel adding data to pivot table while inserting new record

我有三个table,

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

在这种情况下,我有用户 table 与具有多对多关系的角色 table 相关联。

我有两个 eloquent 模型作为

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

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

现在,问题是我何时想要添加新用户以及我想分配给用户的角色 ID。如何使用 Laravel 最佳实践插入值以枢轴 table?

我现有的代码是:-

$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();

下一步做什么???

真的全部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);

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