Laravel用户 - 多对多关系的角色

时间:2017-01-03 19:24:28

标签: laravel authentication

我创建了一个Role表,它与User表有多对多的关系。模型和一切就绪加上我可以将所有表格正确播种以创建默认用户+3个角色。

我想修改脚手架寄存器控制器,以便我可以附加一个角色以及其他属性(名称,邮件等)。默认的create方法如下所示:

protected function create(array $data)

    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);
}

我如何调用角色模型?以及如何在create函数中传递它并最终传递给视图? 我最初的想法是:

use App\Role;

在文件的开头和

$roles = Role::all();

也许在创建功能上?这可能是错的,但我想不出别的东西。

另外,我如何在视图后调用它?角色表有3个预定义角色,如上所述。

1 个答案:

答案 0 :(得分:2)

您需要先创建用户,然后需要附加角色并返回用户实例。这应该适合你:

protected function create(array $data)
{
    $user = User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);

    $roles = [2, 4];

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

    return $user;
}