簡體   English   中英

使用 Laravel 同時插入兩個表的主鍵和外鍵

[英]Insert into two tables simultaneously primary key and foreign key using Laravel

我有兩個表'invoice','invoice_no'作為主鍵,'invoice_details','invoice_no'作為外鍵。 我想使用 Laravel 同時將數據插入到兩個表中。 問題是當我提交表單時,數據被存儲到發票表中,但沒有存儲到 invoice_details 中,這給了我完整性約束違規錯誤,外鍵是 null。

這是 controller 代碼:

public function insertInv(Request $request){
        
        //insert into invice
        $customer_name = $request->input('customer_name');
        $c_email = $request->input('c_email');
        $c_phone = $request->input('c_phone');
        $billing_address = $request->input('billing_address');
        $term = $request->input('term');
        $order_date = $request->input('order_date');
        $due_date = $request->input('due_date');
        $discount = $request->input('discount');
        $net_total = $request->input('net_total');
        $paid = $request->input('paid');
        $due = $request->input('due');
        $payment_type = $request->input('payment_type');
        $invoice_msg = $request->input('invoice_msg');
        

        //insert into invoice_details
        $invoice_no = $request->input('invoice_no');
        $product_name = $request->input('state');
        $inven_name = $request->input('country');
        $unit = $request->input('unit');
        $price = $request->input('price');
        $qty = $request->input('cqty');
        $sub_total = $request->input('sub_total');


        //insert into invoice
        $invo=array('customer_name'=>$customer_name,'c_email'=>$c_email,'c_phone'=>$c_phone,'billing_address'=>$billing_address,'term'=>$term,'order_date'=>$order_date,'due_date'=>$due_date,'discount'=>$discount,'net_total'=>$net_total,'paid'=>$paid,'due'=>$due,'payment_type'=>$payment_type,'invoice_msg'=>$invoice_msg );

        DB::table('invoice')->insert($invo);

        
        //insert into invoice_details
        $invo_det=array('invoice_no'=>$invoice_no,'product_name'=>$product_name,'inven_name'=>$inven_name,'unit'=>$unit,'price'=>$price,'qty'=>$qty,'sub_total'=>$sub_total);

        DB::table('invoice_details')->insert($invo_det);
        
     
        return redirect()->back();
}

您可以使用insertGetId方法:

$invoiceId= DB::table('invoice')->insertGetId($invo);     
$invo_det=array('invoice_no'=>$invoiceId,'product_name'=>$product_name,'inven_name'=>$inven_name,'unit'=>$unit,'price'=>$price,'qty'=>$qty,'sub_total'=>$sub_total);

    DB::table('invoice_details')->insert($invo_det);

我還建議您在事務中執行此操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM