javascript - Laravel Invoice & InvoiceItems - 如何更新?
问题描述
我正在使用Laravel 5.7
& VueJs 2.5.*
...
我有两个表TicketInvoice
& TicketInvoiceItems
,其关系类似于TicketInvoice
hasMany TicketInvoiceItems
& TicketInvoiceItems
belongsTo TicketInvoice
...
我可以成功创建TicketInvoice
& TicketInvoiceItems
,但我不知道如何更新它...
这是我的store
方法(工作):
public function store(Request $request)
{
$ticketInvoiceItems = collect();
foreach($request['ticketInvoiceItems'] as $invoiceItem) {
$ticketInvoiceItems->push(new TicketInvoiceItems ([
'passenger_name' => $invoiceItem ['passenger_name'],
'ticket_no' => $invoiceItem ['ticket_no'],
'fares' => $invoiceItem ['fares'],
'sub_total' => $invoiceItem ['sub_total']
]));
}
$ticketInvoice = TicketInvoice::create([
'vendor_id' => $request['vendor_id'],
'ticket_invoice_no' => $request['ticket_invoice_no'],
'ticket_invoice_date' => $request['ticket_invoice_date'],
'ticket_invoice_fares_total' => $request['ticket_invoice_fares_total'],
'ticket_invoice_grand_total' => $request['ticket_invoice_grand_total'],
]);
$ticketInvoice->ticketInvoiceItems()->saveMany($ticketInvoiceItems);
}
这是我的update
方法(不工作:'():
public function update(Request $request, $id)
{
$ticketInvoice = TicketInvoice::findOrFail($id);
$ticketInvoiceItems = collect();
foreach($request['ticketInvoiceItems'] as $invoiceItem) {
$ticketInvoiceItems->push(new TicketInvoiceItems ([
'passenger_name' => $invoiceItem ['passenger_name'],
'ticket_no' => $invoiceItem ['ticket_no'],
'fares' => $invoiceItem ['fares'],
'sub_total' => $invoiceItem ['sub_total']
]));
}
$ticketInvoice->update($request->all());
$ticketInvoice->ticketInvoiceItems()->update($ticketInvoiceItems);
}
解决方案
一、删除子记录:
$ticketInvoice->ticketInvoiceItems()->delete();
然后存储新的:
$ticketInvoiceItems = collect();
foreach($request['ticketInvoiceItems'] as $invoiceItem) {
$ticketInvoiceItems->push(new TicketInvoiceItems ([
'passenger_name' => $invoiceItem ['passenger_name'],
'ticket_no' => $invoiceItem ['ticket_no'],
'fares' => $invoiceItem ['fares'],
'sub_total' => $invoiceItem ['sub_total']
]));
}
$ticketInvoice->ticketInvoiceItems()->saveMany($ticketInvoiceItems);
推荐阅读
- c# - 如何将重复的 XML 元素序列化为数组?
- javascript - 如何更改特定类名的所有类名元素
- python - 使用 python,我如何通过 .ics 文件获取今天的事件
- javascript - 创建类别时Rails 6 Ajax页面不断刷新
- visual-studio-code - 在 VS Code 中检测拆分编辑器
- php - 将 MySql 数据导出到 CSV 但获取 UTC 日期
- html - 怎么做标签出现在
- mysql - Laravel 数据表加载数据时间过长
- python - Python到Pyspark函数UDF如何输出列表列表
- javascript - 如何在 JS 中更改日历小部件的开始日期和结束日期?