在 laravel 的 foreach 循环中修改当前对象
Posted
技术标签:
【中文标题】在 laravel 的 foreach 循环中修改当前对象【英文标题】:Modifing current object in foreach loop in laravel 【发布时间】:2020-03-12 01:51:22 【问题描述】:当我这样做时($id_paket);顺利,但是当你在这里输入代码进入数据库时,为什么只存储最后一个输入?
控制器:
public function update_penawaran(Request $request,$id)
$harga_satuan = $request->input('harga_satuan');
foreach ($request->input('harga_satuan') as $key => $hargasatu)
DB::table('tbl_pesanan as a')
->join('tbl_paket as b', 'a.id_paket', '=', 'b.id_paket')
->where('a.id_paket', $id)
->update([
'b.status_paket' => $request->status_paket,
'harga_satuan' => $harga_satuan[$key]
]);
// dd($harga_satuan);
return redirect('/pesanan')->with('success','Berhasil Menambahkan Penawaran!');
查看:
@foreach($pesanan as $p)
<tbody>
<tr id="addRow" >
<td class="col-xs-3" style="text-align: center;" > $p->kode_bmn
</td>
<td class="col-xs-3" style="text-align: center;">$p->jenis_barang
</td>
<td class="col-xs-5" style="text-align: center;">$p->kuantitas
</td>
<td class="col-xs-5" style="text-align: center;">$p->satuan_ukuran
</td>
<td class="col-xs-5" style="text-align: center;">$p->kode_ruang
</td>
<td class="col-xs-3">
<input class="form-control " name="harga_satuan[] " type="text" placeholder="Enter title" />
</td>
</tr>
</tbody>
@endforeach
id_pesanan(主键) id_paket(外键) 如何解决这个问题?
【问题讨论】:
因为你多次更新多行,最后这些行的值将被最后一个循环更新。 如何解决? 问题是你怎么知道哪一行需要更新到$harga_satuan[$key]
【参考方案1】:
这是我的简单解决方案。
控制器
改变
->where('a.id_paket', $id)
进入
->where('a.id_paket', $key)
查看
改变
<input class="form-control " name="harga_satuan[] " type="text" placeholder="Enter title" />
进入
<input class="form-control " name="harga_satuan[ $p->id_paket ][] " type="text" placeholder="Enter title" />
【讨论】:
以上是关于在 laravel 的 foreach 循环中修改当前对象的主要内容,如果未能解决你的问题,请参考以下文章
在 foreach 循环中删除重复项(但计算它们) - Laravel 8
在刀片 laravel 中多次防止 foreach 循环 html 标记
如何在刀片模板的 foreach 循环中访问 laravel 集合?
如何在 laravel 中解码 Json 对象并在 laravel 中应用 foreach 循环