在数据库中保存多个记录-一对多关系

时间:2018-10-24 11:36:59

标签: javascript laravel vue.js vuejs2 laravel-5.7

我正在使用Laravel 5.7VueJs 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

1 个答案:

答案 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()方法填充。