我正在尝试将来自具有多个值的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();
}
答案 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_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();
}
我建议您精通编程的基本原理,并亲自学习调试代码。