首页 > 解决方案 > 即使字段不在表单请求中,如何在 laravel 模型中填充字段

问题描述

抱歉标题凌乱。

所以,我有一个基本的用户模型,我正在尝试注册一个新用户,问题是我在用户表中的一个字段是一个“屏幕名称”,我想用第一个“单词”自动归档从名称属性。

我怎样才能做到这一点?

我试过了

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

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

标签: phplaravelmodellaravel-6

解决方案


模型

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

推荐阅读