我正在使用Laravel 5.7
和VueJs 2.5.*
...
我想将TicketInvoice
及其TicketInvoiceItems
数据保存在数据库中,当我提交发票表格时,TicketInvoice
数据存储在DB
中,但TicketInvoiceItems
数据存储是否为空,无论是否填充,我也有TicketInvoiceItems
的动态字段,因为TicketInvoice
hasMany()
TicketInvoiceItems
,所以无论我添加多少行,填充&Submit,只有一行记录存储在DB
中,并且如上所述,所有Items字段都存储为null。
这是我的store
的{{1}}方法:
TicketInvoiceController
这是我的public function store(Request $request) {
$ticketInvoiceItems = collect();
$ticketInvoiceItems - > push(new TicketInvoiceItems([
'ticket_invoice_id' => $request['ticket_invoice_id'],
'passenger_name' => $request['passenger_name'],
'ticket_no' => $request['ticket_no'],
'departure_date' => $request['departure_date'],
'fares' => $request['fares'],
'sub_total' => $request['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);
}
代码,我不知道自己是否在这里犯了任何错误,请仔细阅读:
VueJs
答案 0 :(得分:0)
我得到了答案...
我在请求中没有正确访问TicketInvoiceItems
数据。我目前正在做:
$ticketInvoiceItems - > push(new TicketInvoiceItems([
'ticket_invoice_id' => $request['ticket_invoice_id'],
'passenger_name' => $request['passenger_name'],
'ticket_no' => $request['ticket_no'],
'departure_date' => $request['departure_date'],
'fares' => $request['fares'],
'sub_total' => $request['sub_total']
]));
但是我从前端发回的请求数据将所有这些数据包装在ticketInvoiceItems
数组中。
所以我需要做类似的事情:
foreach($request['ticketInvoiceItems'] as $invoiceItem) {
$ticketInvoiceItems - > push(new TicketInvoiceItems([
'ticket_invoice_id' => $invoiceItem['ticket_invoice_id'],
'passenger_name' => $invoiceItem['passenger_name'],
'ticket_no' => $invoiceItem['ticket_no'],
'departure_date' => $invoiceItem['departure_date'],
'fares' => $invoiceItem['fares'],
'sub_total' => $invoiceItem['sub_total']
]));
}
另外,我还在'ticket_invoice_id'
上明确设置了TicketInvoiceItems
,因为这将由saveMany()
方法填充。