【问题标题】:Laravel 5.4 : Creating 'Profile Class instance' after creating new userLaravel 5.4:创建新用户后创建“配置文件类实例”
【发布时间】:2017-05-16 12:41:36
【问题描述】:

在 Laravel 5.4 中,他们对用户身份验证系统进行了硬编码,因此当您使用工匠命令 'make:auth' 时,所有内容都会在后台为您创建,但问题是当我的用户成功注册时我想要我想创建一个“个人资料类”的新实例并将表格列设为空,直到用户填写他的个人资料,那么我在哪里可以放置创建用户个人资料的代码?

【问题讨论】:

标签: php laravel laravel-5.4 laravel-artisan


【解决方案1】:

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
        });
    }
}

【讨论】:

  • 感谢@Nicklas 的回答,我会对其进行测试,然后将其标记为答案。
【解决方案2】:

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

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;
     }

【讨论】:

    猜你喜欢
    • 2017-06-29
    • 1970-01-01
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-26
    • 2013-03-15
    • 2020-08-03
    相关资源
    最近更新 更多