所以,几个星期以后我正在学习Laravel框架,现在我想弄清楚如何在Laravel中正确提交表单,其中所有插入的字段具有相同的名称以及如何保存到数据库。所以下面是一段代码:
<tr>
<td>
<div class="form-group{{ $errors->has('item') ? ' has-error' : '' }}">
<label for="item"></label>
<input type="text" class="form-control" id="item" name="item[]" placeholder="Prekė">
</div>
</td>
<td>
<div class="form-group{{ $errors->has('quantity') ? ' has-error' : '' }}">
<label for="quantity"></label>
<input type="text" class="form-control quantity" name="quantity[]" placeholder="Kiekis">
</div>
</td>
<td>
<div class="form-group{{ $errors->has('price') ? ' has-error' : '' }}">
<label for="price"></label>
<input type="text" class="form-control price" name="price[]" placeholder="Kaina">
</div>
</td>
</tr>
<tr>
<td>
<div class="form-group{{ $errors->has('item') ? ' has-error' : '' }}">
<label for="item"></label>
<input type="text" class="form-control" id="item" name="item[]" placeholder="Prekė">
</div>
</td>
<td>
<div class="form-group{{ $errors->has('quantity') ? ' has-error' : '' }}">
<label for="quantity"></label>
<input type="text" class="form-control quantity" name="quantity[]" placeholder="Kiekis">
</div>
</td>
<td>
<div class="form-group{{ $errors->has('price') ? ' has-error' : '' }}">
<label for="price"></label>
<input type="text" class="form-control price" name="price[]" placeholder="Kaina">
</div>
</td>
</tr>
一段Laravel代码:
public function postNewOrder(Request $request)
{
$this->validate($request, [
'title' => 'required',
'item' => 'required',
'quantity' => 'required',
'price' => 'required',
]);
Order::create([
'user_id' => Auth::user()->id,
'title' => $request->input('title'),
'total' => $request->input('total'),
]);
Item::create([
'order_id' => 1,
'position' => 1,
'item' => $request->input('item'),
'quantity' => $request->input('quantity'),
'price' => $request->input('price'),
'sum' => $request->input('sum'),
]);
return redirect()->route('order.list')->with('info', 'Užsakymas sėkmingai pridėtas');
}
我知道我需要使用foreach循环,但我不知道如何执行此操作。
提前感谢您的帮助!
编辑: 这是一个例子: https://jsfiddle.net/xqy6qafk/3/
点击“Pridėtiprekę”按钮。表格中添加了一行。所以现在我想在你点击按钮“Išsaugoti”时将这两行插入到数据库中,但是我不知道怎么做。
答案 0 :(得分:0)
你是用jQuery动态添加行的,所以我想最好的方法是用jQuery从动态创建的行中收集数据,然后将这些数据发送到控制器。
在控制器中,如果准备了JSON数据,您只需将其转换为具有json_decode()
函数的数组(行数组)数组。
执行此操作后,您可以使用单个子句插入多行而不使用任何foreach
循环:
Item::create($arrayOfArrays); // This will insert multiple items