Laravel 5.4 : 创建新用户后创建 'Profile Class instance'

Laravel 5.4 : Creating 'Profile Class instance' after creating new user

在 Laravel 5.4 中,他们对用户身份验证系统进行了硬编码,因此当您使用 artisan 命令时 'make:auth' 一切都会在幕后为您创建,但问题是我想要我的用户注册成功 我想创建一个新的 'Profile Class' 实例并使 table 列为空,直到用户填写他的个人资料,那么我可以在哪里放置创建用户个人资料的代码?

RegisterController 中,您可以覆盖 registered 函数。

用户注册成功后直接调用该函数

/**
 * The user has been registered.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  mixed  $user
 * @return mixed
 */
protected function registered(Request $request, $user)
{
    // Create a profile here
}

或者,您也可以直接在用户模型上使用模型事件来执行此操作

class User extends Authenticatable
{

    protected static function boot()
    {
        parent::boot();

        static::creating(function($user) {
            // Create profile here
        });
    }
}

app\Http\Controllers\Auth\RegisterController.phpcreate() 方法中,您可以在创建新用户后立即执行此操作:

use App\Profile;              // <-- Import this at the top

protected function create(array $data)
     {
         $user = User::create([    // <-- change this as you see fit
             'name' => $data['name'],
             'email' => $data['email'],
             'password' => bcrypt($data['password']),
         ]);

         Profile::create(['user_id' => $user->id]);

         return $user;
     }