【发布时间】:2021-07-19 12:03:27
【问题描述】:
我想为每个注册了新帐户的用户添加一个新角色。所以在RegisterController.php,我添加了这个:
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
$role = Role::where('name', 'manual user')->first();
$user->roles()->attach($role->id);
return $user;
}
我已经在roles 表中拥有名为manual user 的行:
但现在的问题是,每当我尝试注册新用户时,它都不会将 $role->id 附加到数据透视表 role_user 表!!
请注意,我还添加了这些关系:
User.php:
public function roles()
{
return $this->belongsToMany(Role::class);
}
Role.php:
public function users()
{
return $this->belongsToMany(User::class);
}
role_user 表的迁移是这样的:
public function up()
{
Schema::create('role_user', function (Blueprint $table) {
$table->unsignedBigInteger('user_id');
$table->unsignedBigInteger('role_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('role_id')->references('id')->on('roles')->onDelete('cascade');
$table->timestamps();
});
}
那么这里出了什么问题?我该如何解决这个问题?
我非常感谢你们的任何想法或建议......
提前致谢。
【问题讨论】:
-
您在使用
$user变量进行附加时说return User::create([。将其更改为$user = User::create([ -
@POOYAA 哎呀,你说得对!