我创建了一个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个预定义角色,如上所述。
答案 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;
}