我有一个可以通过单击按钮添加多行的地方,我想将数据存储到数据库中
这是我提交表单时遇到的错误 - 数组转换为字符串
表单输入我没有发布表单元素,因为我认为我不需要在这里显示它
<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();
}
答案 0 :(得分:0)
您尝试存储这些值列表的数据库列是字符串,您将数组传递给Manifest的构造函数,因此出错。
为了修复它,你需要告诉Laravel这些值将是数组,以便它可以在数组和字符串之间进行必要的转换 - 它在内部将其编码为JSON。
您需要在模型中添加以下内容:
protected $casts = [
'customer' => 'array',
'produce' => 'array',
'task' => 'array',
'units' => 'array',
];