【问题标题】:Laravel get array of values imploded from Form RequestLaravel 获取从表单请求内爆的值数组
【发布时间】:2021-08-01 22:58:56
【问题描述】:

我的 From Request 中有以下规则:

return [
    'brand_id' => 'required|numeric',
    'name' => 'required|string',
    'wage_type_id' => 'required|numeric',
    'work_days' => 'required|array',
    'weekly_min' => 'required|numeric',
    'weekly_max' => 'required|numeric',
    'weekly_utmost' => 'required|numeric',
    'daily_std' => 'required|numeric',
    'daily_min' => 'required|numeric',
    'daily_max' => 'required|numeric',
];

其中一个,work_days 应该作为数组发送。

我可以从经过验证的表单请求中创建工作类型,例如

WorkType::create($request->all());

但我不能确定将数组存储在数据库中。

有没有办法让 work_days 内爆,以便我可以使用上面的一行直接从请求中创建我的记录?

注意:我希望数组内爆,而不是 json 编码,因为我要插入到 SET 的字段类型中。

【问题讨论】:

  • 接受数组并将其编码为json ?
  • @Tithira 在表单请求中怎么做?
  • @JustCarty 如何在规则中应用它们?
  • 您希望请求为您内爆?这不是一个聪明的主意。它只会给任何新开发人员增加一层混乱,这样您就可以调用 $request->all() 而不是单独获取每个属性。我实际上更喜欢单独获取每个属性,因为这意味着以后不会有不良行为。

标签: laravel validation laravel-8 laravel-formrequest


【解决方案1】:

您实际上可以在控制器中创建模型之前修改请求参数。

$request->merge([
    "work_days" => implode(", ", $request->work_days)
]);

WorkType::create($request->all());

如果您希望它位于 FormRequest 中,请覆盖 passedValidation() 方法

class SampleFormRequest extends FormRequest
{

    public function passedValidation()
    {
        $this->request->add([
            "work_days" => implode(", ", $this->request->get("work_days"))
        ]);
    }
}

但对我来说,我更喜欢单独编写所有属性,而不是使用$request->all()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 1970-01-01
    • 2011-06-18
    相关资源
    最近更新 更多