javascript - laravel 控制器:多个动态行的更新功能
问题描述
编辑功能在 EditInvoice 刀片中运行良好,并显示特定行及其值。示例:如果我选择编辑发票 N17 ,在 EditInvoice 刀片 2 中将出现结果(见表格图像)。
对于下一步,我需要更新这 2 个结果值(发票服务)。我在更新功能中尝试了很多方法,但没有奏效。
- 商店功能:运作良好
public function store(Request $request) :
...
.....
$designation = $request->designation;
$QTE = $request->QTE;
$PU = $request->PU;
$total = $request->total;
$c = count($request->designation);
for ( $i=0; $i< $c; ++$i) { //get all rows(dynamic add/remove)
$invoice_number = $request->invoice_number;
$invoice_id = Invoices::latest()->first()->id;
$services = new invoice_services();
$services->invoice_number = $invoice_number;
$services->invoice_id = $invoice_id;
$services->designation = $designation[$i];
$services->QTE = $QTE[$i];
$services->PU = $PU[$i];
$services->total = $QTE[$i] * $PU[$i];
$services->save();
}
..
...
- 更新功能:需要编辑
public function update(Request $request )
{
//Here we need to update the rows !! I tried many ways but it didnt work
}
- 编辑功能:效果很好
public function edit($id) {
$invoices = invoices::where('id', $id)->first();
$services = invoice_services::where('invoice_id' , $id)->get();
$clients = clients::all();
return view('invoices.edit_invoice', compact('clients', 'services' , 'invoices'));
}
- edit_invoice 视图:效果很好
@foreach ($services as $service)
<tr>
<td><input type="text" name="designation[{{ $service->id }}]" value="{{ $service->designation }}" class="form-control"></td>
<td><input type="text" name="QTE[{{ $service->id }}]" id="QTE'+incrementalRow+'" value="{{ $service->QTE }}" class="form-control"></td>
<td><input type="text" name="PU[{{ $service->id }}]" id="PU'+incrementalRow+'" value="{{ $service->PU }}" class="form-control"></td>
<td><input type="text" class="form-control form-control-lg" name="total[{{ $service->id }}]" value="{{ $service->total }}" id="totali'+incrementalRow+'" readonly ></td>
</tr>
@endforeach
解决方案
首先,您需要模型 ID 来更新它们。因此,您必须使用POST(或PUT如果您有资源路由)在您的数据数组中发送模型 ID 。然后在更新函数中设置属性并保存到每个如下所示。
$models = $request->input("models"); // as an array
foreach($models as $model) {
$row = Incvoices::findOrFail($model["id"]);
$row->total = $model["total"];
$row->save();
}
推荐阅读
- javascript - 我需要测试一组累积奖金结果。我需要一个函数,如果所有结果都相同则返回 true,如果它们不同则返回 false
- php - Symfony 4 更改默认表单名称
- php - Laravel 6 - 显示验证消息的新方法
- c# - RegisterWaitForSingleObject vs System.Timers
- blockchain - 如何将英特尔 SGX 平台服务与 Hyperledger Sawtooth 结合使用?
- django - 列表字典输出不是我所期望的
- javascript - 更改应用状态后清除存储数据
- json - 转换 json 列表时无法使用 xmltodict.unparse 将 json 解析为 xml
- ios - 如何用 3 个带有标题的子项扩展 tableview
- python - Asterisk 事件设备注册