繁体   English   中英

在Laravel中保存动态表单字段数据

[英]Saving dynamic form field data in Laravel

我有一个for您可以通过单击按钮添加多行的方式,我想将数据存储到数据库中

这是我提交表单时遇到的错误-数组到字符串的转换

表单输入我没有发布form元素,因为我不需要在这里显示它

<input type="text" class="form-control" name="customer[]" />
<input type="text" class="form-control" name="produce[]" />
<select class="form-control" name="task[]">
    <option value=""></option>
    <option value="Pick Up">Pick Up</option>
    <option value="Delivery">Delivery</option>
</select>
<input type="text" class="form-control" name="units[]" />

控制器代码

public function createManifest(Request $request)
    {
        $this->validate($request, [
           // validate hidden
           'date_val'       => 'required',
           'driver_name'    => 'required',
           'truck_num'      => 'required',
           'run_num'        => 'required',
           // validate fields
           'customer'       => 'required',
           'produce'        => 'required',
           'task'           => 'required',
           'units'          => 'required',
        ]);

        $manifest = new Manifest([
           'user_id'        => Auth::user()->id,
           'date'           => $request->input('date_val'),
           'driver_name'    => $request->input('driver_name'),
           'truck_number'   => $request->input('truck_num'),
           'run_number'     => $request->input('run_num'),
           'customer_name'  => $request->input('customer'),
           'produce'        => $request->input('produce'),
           'task'           => $request->input('task'),
           'units'          => $request->input('units'),
        ]);

        $manifest->save();
    }

您尝试存储这些值列表的数据库列是字符串,并且您要将数组传递给Manifest的构造函数,因此会出现错误。

为了修复它,您需要告诉Laravel这些值将是数组,以便它可以在数组和字符串之间进行必要的转换-它在内部将其编码为JSON。

您需要在模型中添加以下内容:

protected $casts = [
  'customer' => 'array',
  'produce' => 'array',
  'task' => 'array',
  'units' => 'array',
];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM