我已经将头像列添加到生成的用户表中,如何为头像列设置默认值

时间:2019-04-12 15:12:20

标签: laravel

我正在使用Laravel Framework,我已经通过“ $ php artisan make:auth”命令生成了所有注册和登录信息,现在我在users表中添加了一个名为“ avatar”的新列,我想要将其设置为“ noimage.jpg”,因此每次我默认注册时都会添加“ noimage.jpg”。

RegisterController

protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'username' => $data['username'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
        'avatar' => 'noimage.jpg' //How it suppose to be?
    ]);
}

graphical representation of users table

2 个答案:

答案 0 :(得分:2)

您还必须将avatar添加到模型的$fillable属性中。否则,您无法使用create进行分配。请参阅Mass Assignment上的文档。

您可以手动分配头像:

protected function create(array $data)
{
    $user = User::create([
        'name' => $data['name'],
        'username' => $data['username'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
    ]);

    $user->avatar = 'noimage.jpg';

    return $user;
}

答案 1 :(得分:0)

为模型设置默认值的另一种方法是使用 Laravel生命周期


const DEFAULT_AVATAR = 'noimage.jpg'

protected static function boot()
{
  parent::boot();
  static::creating(function (User $user) {
      if (!$user->avatar) {
        $user->avatar = self::DEFAULT_AVATAR;
      }
  });
}

请参阅: https://laravel.com/docs/5.8/eloquent#events