保存多个输入 Laravel 5.6

Posted

技术标签:

【中文标题】保存多个输入 Laravel 5.6【英文标题】:Save multiple inputs Laravel 5.6 【发布时间】:2019-02-06 04:37:56 【问题描述】:

我正在尝试将来自 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();

        

【问题讨论】:

在您的 foreach 循环中,您不断地覆盖 $cprice-&gt;size 属性。你到底期待什么? 将 $request->fixed_size 更改为 $request-> fix_size 我希望将数组的值从 fixed_size 保存到我的“大小”列。谢谢 对不起,我的代码打错了 $request->fix_size @RenzchlerOxiño,所以可能想在下面尝试我的答案。 【参考方案1】:

请记住,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();

我可能会建议你掌握编程的基本原理,并学会自己调试代码。

【讨论】:

非常感谢@aceraven777。是的,我会掌握编程的基本原理,谢谢你的建议。我会从中吸取教训。谢谢大家的帮助。【参考方案2】:

试试这个

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

【讨论】:

您好,我已经尝试过了,它适用于“大小”列。但是我的“价格”专栏现在遇到了问题。 谢谢@Gaurav【参考方案3】:

你可以试试这个:

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-&gt;size 属性。

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

【讨论】:

你好,我试过了,但我收到错误“方法 Illuminate\Database\Query\Builder::input 不存在。” 谢谢@rap-2-h

以上是关于保存多个输入 Laravel 5.6的主要内容,如果未能解决你的问题,请参考以下文章

Laravel:一次保存多个模型/ json嵌套输入

快速向有关系的表中插入 200 多个数据 - Laravel 5.6

laravel 5.6 - 获取属于多个的多层父子的数据

Laravel 5.6 |雄辩的一对多关系

Laravel 5.6 上的 419 Ajax 错误 - 已编辑

在 Laravel 5.1 和 Vue JS 中保存多个数据动态表单