Я добавил столбец аватара в сгенерированную таблицу пользователей, как сделать значение по умолчанию для столбца аватара - PullRequest
0 голосов
/ 12 апреля 2019

Я использую Laravel Framework, я сгенерировал все регистр и логин с помощью команды "$ php artisan make: auth", теперь я добавил новый столбец с именем "avatar" в таблицу users и хочу установить это к «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 ]

2 голосов
/ 12 апреля 2019

Вы также должны добавить avatar к свойству $fillable вашей модели.В противном случае вы не можете назначить его с помощью create.См. Документы по Массовое назначение .

Вместо этого вы можете вручную назначить аватар:

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;
}
0 голосов
/ 12 апреля 2019

Другой способ установить значение по умолчанию для вашей модели - использовать 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...