我想为每个注册新帐户的用户添加一个新角色。所以在 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;
}
而且我已经在 manual user
表中有名为 roles
的行:
但是现在的问题是,每当我尝试注册新用户时,它都不会将 $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();
});
}
那么这里出了什么问题?我该如何解决这个问题?
我真的很感激你们的任何想法或建议......
提前致谢。
答案 0 :(得分:0)
您在方法的第一行说 return User::create([
,同时使用 $user 变量进行附加。将其更改为 $user = User::create([