在 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 循环

如何在 Laravel 的 PHP/Blade 中使用 Foreach 循环?

在laravel foreach循环中传递多个变量[重复]