Php 在Laravel中发布多个同名字段

Php 在Laravel中发布多个同名字段,php,laravel,Php,Laravel,我正在尝试创建一个购物车,我想发布多个同名字段并处理它们 <?php foreach($datacart as $datacart) { ?> <form method="post" action="/update-cart"> <input type="hidden" name="rowid" value="{{$datacart->rowid}}"> <input type="text" name="quantity" value="{{$d

我正在尝试创建一个购物车,我想发布多个同名字段并处理它们

<?php foreach($datacart as $datacart) { ?>
<form method="post" action="/update-cart">

<input type="hidden" name="rowid" value="{{$datacart->rowid}}">
<input type="text" name="quantity" value="{{$datacart->quantity}}">

 <?php }>

<input type="submit" value="update">

</form>


public function update_cart(request $request){

   $rowId = $request->rowid;
   $quantity = $request->quantity;



   Cart::update($rowId, $quantity);

}


因此,您需要做的是在html标记中定义输入是如下所示的数组:

public function update_cart(request $request) {
    foreach ($request->rowid as $index => $rowid) {
        $quantity = $request->quantity[$index];
        Cart::where('id', $rowId)
            ->update([
                'quantity' => $quantity
            ]);
    }
}
i、 e.在输入元素名称旁边使用方括号
[]


首先,让我们改进您的刀片文件,您可以使用刀片语法而不是PHP,因此:

<form method="post" action="/update-cart">
    @csrf

    @foreach($datacart as $datacart)
        <input type="hidden" name="rowid[]" value="{{$datacart->rowid}}">
        <input type="text" name="quantity[]" value="{{$datacart->quantity}}">
    @endforeach

    <input type="submit" value="update">
</form>
--编辑


刚刚测试了在模型上调用
update
,因为静态方法不起作用。

您需要在名称后面追加
[]


然后在控制器方法中

公共功能更新\u购物车(请求$Request){
对于($i=0;$iinput('rowid'));$i++){
$cart=cart::find($request->input('rowid')[$i];
$cart->quantity=$request->input('quantity')[$i];
}
}

谢谢大家。这段代码对我很有用。我使用带有索引的for循环

<input type="hidden" name="rowid[]" value="{{$datacart->rowid}}">
<input type="text" name="quantity[]" value="{{$datacart->quantity}}">

,

for($i=0;$iinput('rowid'));$i++){
购物车::更新($request->rowid[$i],$request->quantity[$i]);
}

这只适用于
id
quantity
字段在
Cart
模型中标记为
filleble
的情况-您应该接受一个对您有帮助的答案,因为所有的建议都是您刚才展示的。而不是回答您从其他答案中获得的帮助。
public function update_cart(Request $request) {

    foreach ( $request->rowid as $index => $id ) {
       Cart::find($id)->update(['quantity' => $request->quantity[$index]]);
    }

}
<input type="hidden" name="rowid[]" value="{{$datacart->rowid}}">
<input type="text" name="quantity[]" value="{{$datacart->quantity}}">
 for ($i = 0; $i < count($request->input('rowid')); $i++){

            Cart::update($request->rowid[$i], $request->quantity[$i]);

        }