如何在 laravel 应用程序的用户表中保存'role'归因



我有这个方法注册一个用户到db,但角色字段不来自请求,因为我想把它们分配给每个用户注册,所以我不知道如何保存这个字段在db,我有这个方法:(注册请求$request,用户$ User){

$user = User::create([
'nome' => $request['nome'],
'cognome' => $request['cognome'],
'telefono' => $request['telefono'],
'email' => $request['email'],
'password' => Hash::make($request['password']),
]);
$user->assignRole('Regular_user');
return $user;
}

角色被正确分配,但是它没有存储在db

之后一个用户可以传递给专业用户,我也必须找到一个更新方法…任何建议吗?

public function assignRole(...$roles)
{
$roles = collect($roles)
->flatten()
->reduce(function ($array, $role) {
if (empty($role)) {
return $array;
}
$role = $this->getStoredRole($role);
if (! $role instanceof Role) {
return $array;
}
$this->ensureModelSharesGuard($role);
$array[$role->getKey()] = PermissionRegistrar::$teams && ! is_a($this, Permission::class) ?
[PermissionRegistrar::$teamsKey => getPermissionsTeamId()] : [];
return $array;
}, []);
$model = $this->getModel();
if ($model->exists) {
$this->roles()->sync($roles, false);
$model->load('roles');
} else {
$class = get_class($model);
$class::saved(
function ($object) use ($roles, $model) {
if ($model->getKey() != $object->getKey()) {
return;
}
$model->roles()->sync($roles, false);
$model->load('roles');
}
);
}
if (is_a($this, get_class($this->getPermissionClass()))) {
$this->forgetCachedPermissions();
}
return $this;
}

为什么不像这样将角色添加到数组中呢?你的assignRole()方法是什么样子的?

$user = User::create([
'nome' => $request['nome'],
'cognome' => $request['cognome'],
'telefono' => $request['telefono'],
'email' => $request['email'],
'password' => Hash::make($request['password']),
'role' => 'Regular_user'
]);

也看起来你的错误是由于用户表不允许字段角色为空,所以你甚至不能用你的create语句创建一个用户…

最新更新