laravel 中的购物车更新

Cart update in laravel

有这样的表格。这是一个更新表格,我只需要更新购物车中每个产品的数量。 但是我试图分解每个结果但没有用...它 return object2array 转换错误...这是我第一次收到此错误 我如何将其保存在数据库中?

<form action="update">
  @foreach($products as $product)
<input type="text" name="products[]">
<input type="text" name="qty[]">
@endforeach
<input type="submit" calss="btn btn-primary">

这是我的控制器:

Route::post('aggiorna', function() {
$quantita = Input::all();
$carrelli = \App\Models\Carrello::where('entry_by', \Session::get('uid'))->get();
     $quantita = explode(',', $quantita);
     $i = 0;
     foreach($carrelli as $carrello) {
        $carrello->quantita = $quantita[$i]; 
        $i = $i++;
     }
    return Redirect::to('carrello'); 

});

提前致谢。

您对数据库中存在的每个 $carreli 进行迭代,但是您永远不会保存该值。

Route::post('aggiorna', function() {
     $quantita = Input::all();
     $carrelli = \App\Models\Carrello::where('entry_by', \Session::get('uid'))->get();
     $quantita = explode(',', $quantita);
     $i = 0;
     foreach($carrelli as $carrello) {
        $carrello->quantita = $quantita[$i]; 
        $i = $i++;
        $carrelo->save();
     }
    return Redirect::to('carrello'); 

});

更新值后添加 $carrelo->save(); 以便将其保存在数据库中。

使用Input::all();时也要小心。这意味着您的数据数组包含产品和数量。我建议使用以下代码:

Route::post('aggiorna', function() {
     $quantita = Input::get('qty');
     $products = Input::get('products');
     $carrelli = \App\Models\Carrello::where('entry_by', \Session::get('uid'))->get();
     $quantita = explode(',', $quantita);
     $products = explode(',', $products);
     $i = 0;
     foreach($carrelli as $carrello) {
        $carrello->quantita = $quantita[$i]; 
        $carrello->products = $products[$i]; 
        $i = $i++;
        $carrelo->save();
     }
    return Redirect::to('carrello'); 

});

但是因为我不知道你想要达到什么目的,所以我在这里发布了两个解决方案。