Save data from table rows in laravel

冷暖自知 提交于 2019-12-24 18:13:16

问题


I have multiple input fields with same name in a page when i try to save i throws an error.how should i save data from multiple table row data into database. the error Creating default object from empty value at here $varientaccesss->variant_id = $request->input('varient'),

Controller

public function storevarient_update(Request $request)
    {
//return $request;
        $varientprice = new Price();
        $varientprice->variant_id = $request->input('varient');
        $varientprice->discount = $request->input('discount');
        $varientprice->price = $request->input('vehicleprice');
        $varientprice->save();


        $varientaccess = new Categoryvariantmapping();

          foreach ($varientaccess as $varientaccesss){

        $varientaccesss->variant_id = $request->input('varient');
        $varientaccesss->cat_id = $request->input('test');
        $varientaccesss->rate = $request->input('cat_price');
        $varientaccesss->status = '0';

       $varientaccess->save();
   }

        return redirect('Varientupdate')->with('success', 'Details  Added Successfully');


    }

dd($request->all);


回答1:


you can save like this

public function storevarient_update(Request $request)
{
    //return $request;
    $varientprice = new Price();
    $varientprice->variant_id = $request->input('varient');
    $varientprice->discount = $request->input('discount');
    $varientprice->price = $request->input('vehicleprice');
    $varientprice->save();
    $cat_id = $request->input('cat_price');
    $test_ids = $request->input('test');
    foreach($test_ids as $key => $test)
    {
        $varientaccesss = new Categoryvariantmapping();
        $varientaccesss = new Categoryvariantmapping();
        $varientaccesss->variant_id = $request->input('varient'),
        $varientaccesss->cat_id = $test,
        $varientaccesss->rate = $cat_id[$key],
        $varientaccesss->status = '0',
        $varientaccess->save();
    }
    return redirect('Varientupdate')->with('success', 'Details  Added Successfully');
}



回答2:


The purpose of this is to initialize a new data which you are going to save in the database soon

$varientaccess = new Categoryvariantmapping();

but you put it outside the loop

$varientaccess = new Categoryvariantmapping();

foreach(....)

which mean no matter how many rows inside foreach it will only save once because you it won't initialize again

so the solution is to put it inside loop

foreach(....) {

    $varientaccess = new Categoryvariantmapping();
    $varientaccesss->variant_id = $request->input('varient');
    $varientaccesss->cat_id = $request->input('test');
    $varientaccesss->rate = $request->input('cat_price');
    $varientaccesss->status = '0';

   $varientaccess->save();

}


来源:https://stackoverflow.com/questions/52514076/save-data-from-table-rows-in-laravel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!