【发布时间】:2019-04-29 14:44:20
【问题描述】:
我正在尝试将多条记录保存到数据库。我认为从前端视图提交数组一定有问题。
首先,我的行是用 jquery 动态生成的。 我试过 var_dumping 请求,它只给了我第一行。我在每个输入字段名称中的名称中添加了 []。
我的视图中的一些输入字段
<td width="15%">
<select class="form-control select2 item_id" name="item_id[]" required>
<option></option>
</select>
</td>
<td width="10%">
<select class="form-control select2 location_id" name="location_id[]" required>
<option></option>
</select>
</td>
<td width="20%">
<input type="text" class="form-control package" name="package[]" required>
</td>
控制器
$receive = new Receive();
$receive->datetime = $request->datetime;
$receive->user_id = $request->user_id;
$receive->truck_id = $request->truck_id;
$receive->from = $request->from;
$receive->condition = $request->condition;
$receive->space = $request->space;
dd($request->all());
if($receive->save()) {
$id = $receive->id;
foreach($request->item_id as $key=>$it) {
$data = array('receive_id'=>$id,
'item_id'=>$request->item_id [$key],
'location_id'=>$request->location_id [$key],
'package'=>$request->package [$key],
'quantity'=>$request->quantity [$key],
'note'=>$request->note [$key],
);
ItemReceive::create($data);
}
return back()->with('success', 'Received Items successfully');
}
return back()->with('success', 'Received successfully.');
我除了将数组数据保存到数据库中,但只有第一行进入后端。
【问题讨论】:
-
这里的重要部分是通过http发送的数据。使用浏览器的控制台查看您发送的内容,然后断言出现了什么问题。显然,您没有发送数组。
-
@Mjh 如果他不发送数组,他将无法使用
foreach循环。我建议使用dd($request->all());来查看控制器正在接收的确切内容。 -
@ChinLeung 我们不知道他在发送什么,也不知道他是否收到任何警告。这一切都在猜测,看到实际上没有关于正在发送的数据的信息。
-
@Mjh 好吧,他提到第一条记录已正确保存在数据库中,因此他必须收到一些数据。由于控制器在
$request->item_id中循环,所以那一定是一个数组... -
@Mjh 我试过 dd()。是的,他们作为数组发布,但在数组中我可以看到只有一行通过。像这样:'item_id'=>array:1[0]=>"4"
标签: php laravel eloquent query-builder