Php 使用多个数据字段更新Laravel中的列
我有一张这样的表格Php 使用多个数据字段更新Laravel中的列,php,laravel,Php,Laravel,我有一张这样的表格 <form method="POST" action="/path/{{ $tran->transid }}"> {{ csrf_field() }} <td> <input type="text" name="pono[]" class="form-control" placeholder="Purchase Order No"> </td> </tr>
<form method="POST" action="/path/{{ $tran->transid }}">
{{ csrf_field() }}
<td>
<input type="text" name="pono[]" class="form-control" placeholder="Purchase Order No">
</td>
</tr>
<tr>
<td colspan="10"></td>
<td colspan="2">
<input type="submit" name="sbmt" value="Save Information" class="btn btn-primary btn-lg btn-block">
</td>
</tr>
</form>
我希望该列根据每个表单字段中的内容进行更新。但是,上述操作的结果是,它使用表单中的最后一个值更新列“poNo”。拜托,我做错什么了?我需要它用每个字段的值而不是最后一个字段来更新每一行。每次在循环中更新数据库表中的相同记录时。 因此,最后一个值将覆盖前面的值。 如果要更新不同的行。您需要每次更新不相同id的位置(不同id) 请更具体地说明你想做什么。。如果这个答案对您来说还不够,请给我们您的表结构和一些记录 注:无需:
$p = $request['pono'][$key];
您可以改用$pno
:
foreach ($request['pono'] as $key => $pno) {
Model::where('transid', $transid)->update(['poNo' => $pno]);
}
你为什么用
$request['pono'][$key]
而不是只使用$pno
?@RossWilson:我试过把它作为$request['pono']作为$pno),但没有用。请更好地指导我,我只是在完善laraveloyo,你正在更新$request->input(“pono”)的每个循环中所有行的同一列pono
代码>,因此将保存的唯一值是最后一个值。这与其说是逻辑问题,不如说是数据库问题;当您只有一个poNo
列时,如何为单个型号行保存多个poNo
值?要么需要将这些值内爆为CSV,要么创建一个链接表。@TimLewis:拜托,我只是在编写laravel。我使用过程化php,我可以在其中快速完成这项工作。迁移到laravel是一条学习曲线。因此,表单字段中的pono[]告诉我它是一个数据数组。我想更新“poNo”列;在数据库中,每个字段都有不同的值。在这种情况下,您可以展示如何使用过程化php实现这一点。此时,您的代码实际上是在说更新transid
=$transid
所在的行,并设置poNo
=$p
,因此在下一个循环中,它会将poNo
更新为$p
的下一个值。您的查询中是否有其他where?我尝试过,但仍然使用表单的最后一个值进行更新。请参见修改foreach($request['pono']as$key=>$pno){Model::where('id',$request['id'])->update(['pono'=>$pno]);}
foreach ($request['pono'] as $key => $pno) {
Model::where('transid', $transid)->update(['poNo' => $pno]);
}