保存多个输入Laravel 5.6

时间:2018-08-31 07:25:30

标签: laravel eloquent

我正在尝试将来自具有多个值的2个输入的数据保存到数据库中。场景是保存产品后,数据将保存到我的另一个表中,该表的列为'product_id','price','size'。但是,当我尝试运行代码时,只将第一个值保存在“大小”列中,而“价格”中的数据就可以了。

<input name="fix_size[]">
<input name="fix_price[]">

 foreach($request->fix_price as $prc){

            $cprice = new ContainerPrice;
            $cprice->product_id = $id;
            $cprice->price = $prc;

            foreach($request->fix_size as $size){
                $cprice->size = $size;
            }

            $cprice->save();

        }

3 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

foreach($request->fix_price as $key => $prc) {
    $cprice = new ContainerPrice;

    $cprice->product_id = $id;
    $cprice->price = $prc;
    $cprice->size = $request->input('size')[$key];

    $cprice->save();

}

您遇到的问题是,因为您遍历了主循环内的所有元素,而只保留了最后一个元素。换句话说,在foreach循环中,您不断用发现的最后一个覆盖$cprice->size属性。

现在,使用此代码,您可以访问与“价格”具有相同索引的“尺寸”。

答案 1 :(得分:0)

尝试一下

foreach($request->fix_price as $prc){

            foreach($request->fixed_size as $size){
                $cprice = new ContainerPrice;
                $cprice->product_id = $id;
                $cprice->price = $prc;
                $cprice->size = $size;
                $cprice->save();
            }
}

答案 2 :(得分:0)

请记住,fix_sizefix_price是数组。

您必须获得fix_sizefix_price各自的对。因此,您必须监视循环中的索引。

这是您遇到的问题的可能解决方案之一:

$fix_sizes = $request->fix_size;
foreach($request->fix_price as $i => $prc){
    $cprice = new ContainerPrice;
    $cprice->product_id = $id;
    $cprice->price = $prc;
    $cprice->size = $fix_sizes[$i];

    $cprice->save();
}

我建议您精通编程的基本原理,并亲自学习调试代码。