Как заполнить поле в модели laravel, даже если поле не находится в запросе формы - PullRequest
0 голосов
/ 13 апреля 2020

извините за грязный заголовок.

Итак, у меня есть базовая c модель пользователя, и я пытаюсь зарегистрировать нового пользователя, одно из моих полей в таблице пользователей - это имя экрана, которым я хотел бы быть автоматически подаются с первым «словом» из атрибута имени.

Как я могу это сделать?

Я пробовал

public function setScreenNameAttribute($value){
   return 'MyFirstName';
}

Но, как я понимаю, Атрибут set *** будет запущен, только если у меня есть это поле в запросе формы, но я не хочу, чтобы пользователь заполнял это поле. Я хочу, чтобы модель делала это самостоятельно.

1 Ответ

0 голосов
/ 13 апреля 2020

Модель

public function setScreenNameAttribute($value)
    {
        $this->attributes['screen_name'] = strtolower(strtok($value, ' ')); // First name from the full name as screen name
    }

Контроллер

$user->screen_name = 'John Smith'; // your request value goes here - $request->full_name; 

Вам не нужно иметь поле для этого в форме.

Надеюсь, это поможет.

Дайте мне знать, если не сработает.


Обновлено / Anohter solution.

protected $attributes = array(
  'screen_name' => 'Your name' // Any values
);

public function __construct(array $attributes = array())
{
    $this->setRawAttributes(array(
      'screen_name' => strtolower(strtok($attributes->first_name, ' '));
    ), true);
    parent::__construct($attributes);
}
...