即使字段不在表单请求中,如何在laravel模型中填充字段

时间:2020-04-13 00:05:32

标签: php laravel model laravel-6

抱歉,标题混乱。

所以,我有一个基本的用户模型,我正在尝试注册一个新用户,这是我的用户表中的一个字段,是一个“ screen_name”,我希望将其与第一个自动归档名称属性中的“单词”。

我该怎么做?

我尝试过

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

但是据我了解,只有当我在表单请求中有此字段时,才会触发set *** Attribute,但是我不希望用户填写此字段,我希望模型自己完成此操作

1 个答案:

答案 0 :(得分:0)

模型

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解决方案。

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