Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用多个数据字段更新Laravel中的列_Php_Laravel - Fatal编程技术网

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]);
    }