如何在Laravel中更改属性的名称

问题描述 投票:0回答:3

我有一个名为的模型:

Post  with attributes id | name | extra_income 

当我从请求获取数据extra_income正在发送为extra_pay所以当我做Post::create(request()->all()); extra_income因为明显的原因名称无法匹配时为空。

问题是有什么方法可以在Post模型上修改extra_income属性,所以我可以将它映射到extra_pay

laravel
3个回答
3
投票

你在找mutator。并且不要忘记将它附加到$fillable属性,因为你将使用create

class Post
{
    protected $fillable = [
        // ...
        'extra_pay',
    ];

    public function setExtraPayAttribute($value)
    {
        $this->attribute['extra_income'] = $value;
    }

}

0
投票

据我所知,你有一个形式的extra_payextra_income表中的posts。处理此问题的最佳方法是将表单中元素的名称更改为extra_income

或者,你可以这样做:

$data = request()->all();
$data['extra_income'] = $data['extra_pay'];
Post::create($data);

要么:

Post::create(request()->all() + ['extra_income' => request('extra_pay')]);

0
投票

你可以在3个地方做到这一点

  • 改变你的形式是最好的选择。
  • 使用合并$request->merge(['extra_income' => $request->extra_pay]);在传入请求中更改它
  • 或者通过手动设置所有值,在Post :: create方法中更改它。
© www.soinside.com 2019 - 2024. All rights reserved.