保存多个输入 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->size
属性。你到底期待什么?
将 $request->fixed_size 更改为 $request-> fix_size
我希望将数组的值从 fixed_size 保存到我的“大小”列。谢谢
对不起,我的代码打错了 $request->fix_size
@RenzchlerOxiño,所以可能想在下面尝试我的答案。
【参考方案1】:
请记住,fix_size
和 fix_price
是数组。
您必须获得每个 fix_size
和 fix_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->size
属性。
现在,您可以使用此代码访问与“价格”具有相同索引的“尺寸”。
【讨论】:
你好,我试过了,但我收到错误“方法 Illuminate\Database\Query\Builder::input 不存在。” 谢谢@rap-2-h以上是关于保存多个输入 Laravel 5.6的主要内容,如果未能解决你的问题,请参考以下文章
快速向有关系的表中插入 200 多个数据 - Laravel 5.6