使用多个数据字段更新Laravel中的列

时间:2018-08-09 14:20:13

标签: 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>
    <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>

我有一个控制器:

public function poPost(Request $request, $transid)
{
    foreach ($request['pono'] as $key => $pno) {
        $p = $request['pono'][$key];
        Model::where('transid', $transid)->update(['poNo' => $p]);
    }

    return redirect('/path')->with('success', 'Update is successful');
}

我希望该列将根据每个表单字段中的内容进行更新。但是,上述结果是它用表格中的最后一个值更新“ poNo”列。拜托,我在做什么错?我需要它用每个字段的值而不是最后一个字段来更新每一行。enter image description here

1 个答案:

答案 0 :(得分:0)

每次循环都在更新数据库表中的同一条记录。 因此,最后一个值将覆盖先前的值。 如果要更新不同的行。您需要每次更新where(不同的id)不相同的id 请更具体地说明您要做什么..如果此答案对您来说不够,请给我们您的表结构以一些记录

注意:不需要:

$p = $request['pono'][$key];

您可以改用$pno

foreach ($request['pono'] as $key => $pno) {
        Model::where('transid', $transid)->update(['poNo' => $pno]);
    }