Вставка нескольких записей в laravel - PullRequest
0 голосов
/ 27 мая 2019

Как мне несколько записей в таблице 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 ]

1 голос
/ 27 мая 2019

Вместо этого вы можете использовать функцию laravel ' insert '. Например.

 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);

Поскольку запрос в цикле не является хорошей практикой, мы должны избегать этого.

0 голосов
/ 27 мая 2019

Это не работает, потому что, когда ваш цикл находится в 0 итерации, вы использовали return!И ваш цикл не переходит на следующую итерацию.

Когда вы возвращаете какую-то вещь в код функции PHP, после этого она не будет скомпилирована.

Так просто переместите ваше возвращение после for.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...