使用Jetstream-Laravel创建帐户时,无法将角色附加到用户

使用Jetstream-Laravel创建帐户时,无法将角色附加到用户,laravel,laravel-8,jetstream,Laravel,Laravel 8,Jetstream,我试图通过Jetstream身份验证控制器本身(位于App\Actions\Fortify\CreateNewUser)附加角色并更新investments表中的registered\u at字段。我想在用户创建帐户时执行上述功能 下面的代码正在按照我的要求执行该功能,它正在成功地更新registered_at字段,并附加角色,但没有成功地重定向到仪表板 错误 传递给Illumb\Auth\SessionGuard::login()的参数1必须实现接口Illumb\Contracts\Auth\

我试图通过Jetstream身份验证控制器本身(位于
App\Actions\Fortify\CreateNewUser
)附加角色并更新
investments
表中的
registered\u at
字段。我想在用户创建帐户时执行上述功能

下面的代码正在按照我的要求执行该功能,它正在成功地更新
registered_at
字段,并附加角色,但没有成功地重定向到仪表板

错误

传递给Illumb\Auth\SessionGuard::login()的参数1必须实现接口Illumb\Contracts\Auth\Authenticatable,给定null,在第56行的C:\xampp\htdocs\2020\vendor\laravel\fortify\src\Http\Controllers\RegisteredUserController.php中调用

App\Actions\Fortify\CreateNewUser.php-更新代码

App\Actions\Fortify\CreateNewUser.php-原始代码


在原始代码中,返回一个用户,。在我的版本中没有返回语句。JetStream/Fortify期望从该方法返回一个用户实例

最后不得不加上这个

return $user;

您需要从方法返回$user

公共函数创建(数组$input){
验证程序::生成($input)[
'name'=>['required'、'string'、'max:255'],
'email'=>['required','string','email','max:255','unique:users'],
'password'=>this->passwordRules(),
])->validate();
$user=user::创建([
'name'=>$input['name'],
'email'=>$input['email'],
'password'=>Hash::make($input['password']),
]);
$user->roles()->sync('3');
$invitation=invitation::where('email',$user->email)->firstOrFail();
$invitation->registered_at=$user->created_at;
$invitation->save();
返回$user;
}
public function create(array $input) {
    Validator::make($input, [
        'name' => ['required', 'string', 'max:255'],
        'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password' => $this - > passwordRules(),
    ]) - > validate();

    return User::create([
        'name' => $input['name'],
        'email' => $input['email'],
        'password' => Hash::make($input['password']),
    ]);
}
return $user;