在Laravel中插入多个记录

时间:2019-05-27 12:04:18

标签: php laravel

如何在bills_infos表中多个记录? 它获取数据并将其存储在数组变量中,甚至我都可以使用紧凑函数来访问它。我已从问题的开始处进行标记。

public function store(Request $request){
    $request->validate([
            'from'=>'required',
            'to'=>'required',
            'textbox1'=>'required',
            'rate1'=>'required',
            'qty1'=>'required',
    ]);
    $store_bill=new Bills();
    $store_bill->from=request('from');
    $store_bill->name=request('to');
    $store_bill->discount=request('discount');
    if(is_null($store_bill->discount))
    {
        $store_bill->discount=0;
    }
    $store_bill->save();
    $invoice_no=Bills::orderBy('created_at','desc')->pluck('id')->first();
    for($i=1;$i<=10;$i++)
    {
        $item_name[$i]=request('textbox'.$i);
        $amount[$i]=request('rate'.$i);
        $quantity[$i]=request('qty'.$i);
    }
    //return compact('item_name','amount','quantity');
    //Works fine till here.
    /* Not Working From Here. */
    for($i=1;$i<=10;$i++)
    {
        if(!(is_null($item_name[$i]) || is_null($amount[$i]) || is_null($quantity[$i])))
        {
            $store_bills_info=new Bills_Infos();
            $store_bills_info->bills_id=$invoice_no;
            $store_bills_info->item_name=$item_name[$i];
            $store_bills_info->amount=$amount[$i];
            $store_bills_info->quantity=$quantity[$i];
            $store_bills_info->total=$amount[$i]*$quantity[$i];
            $store_bills_info->save();
            //return compact('store_bills_info');
            return view('print')->with('invoice_no',$invoice_no);
        }
    }
    return "Invoice can't be created due to some error";
}

2 个答案:

答案 0 :(得分:1)

您可以改用laravel的“ 插入”功能。 例如

 for($i=1;$i<=10;$i++)
        {
            if(!(is_null($i`enter code here`tem_name[$i]) || is_null($amount[$i]) || is_null($quantity[$i])))
           {
                $store_bills_info[$i]['bills_id']   =$invoice_no;
                $store_bills_info[$i]['item_name']  =$item_name[$i];
                $store_bills_info[$i]['amount']     =$amount[$i];
                $store_bills_info[$i]['quantity']   =$quantity[$i];
                $store_bills_info[$i]['total']      =$amount[$i]*$quantity[$i];
            }
        }
Bills_Infos::insert($store_bills_info);

作为一种不好的循环查询,我们应该避免这样做。

答案 1 :(得分:0)

它不起作用,因为当循环处于0迭代中时,您使用了return! 然后您的循环将不进行下一个迭代。

  

当您在PHP函数中返回某些内容时,此后将不会被编译。

因此,只需for 之后移动您的回报即可。