首页 文章

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

提问于
浏览
18

我有三张 table ,

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 回答

  • 17

    这真的全是described in the documentation . 在询问有关SO的问题之前,请阅读文档中的相应部分 .

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

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

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

相关问题