【问题标题】:How to insert different values into db with input name="value[]"如何使用 input name="value[]" 将不同的值插入到 db
【发布时间】:2020-10-10 17:16:08
【问题描述】:

我有一个问题,我实际上是在尝试在 Laravel 下做一个电子商务网站。 所以这是我的问题: 我尝试获取所有订购的产品数量等 我的表格是这样的:

@foreach($cartCollection as $item)
                {{ $item->name }}<br />
                {{ __('home.quantity') }} : {{ $item->quantity }}<br />
                <input type="hidden" name="product_id[]" value="{{ $item->id }}">
                <input type="hidden" name="quantity" value="{{ $item->quantity }}">
                <input type="hidden" name="size[]" value="{{$item->attributes->size}}">
                <input type="hidden" name="price[]" value="{{$item->price}}">
                <input type="hidden" name="priceItem" value="{{ \Cart::get($item->id)->getPriceSum() }}">
                {{ \Cart::get($item->id)->getPriceSum() }} €<br />
@endforeach

还有我的控制器:

 foreach($request->product_id as $product){
              foreach($request->size as $size){
                  foreach($request->price as $price){
                    $orderedProducts = new OrderedProduct;
                    $orderedProducts->product_id = $product;
                    $orderedProducts->order_id = $order->id;
                    $orderedProducts->quantity = $request->quantity;
                    $orderedProducts->price    = $price;
                    $orderedProducts->size     = $size;
                    $orderedProducts->save();
                  }
              }
          }

有了这个,它创建和复制产品,就像我为 2 种不同的产品获得 2 种尺寸一样,它在数据库中创建 4 次而不是 2 次(一个产品 ID 具有一种尺寸,另一个产品具有另一种尺寸),你有什么解决办法吗?

【问题讨论】:

  • 您是否仔细检查了循环,看起来是嵌套循环导致了问题。
  • 您可以使用UpdateOrCreate 方法,其中您的product_id 应该是唯一的。如果product _id 不在表中,那么它将创建。如果已经存在,那么它将更新
  • 顺便说一句,您使用所有动态数组输入,而不是 quantitypriceItem„ 但为什么呢?
  • 嗯,我同意嵌套循环,我已经尝试不使用这种循环,但是当我这样做时,例如,我有一个大小为 30 的产品另一个有 80 个,它按预期创建了 2 个产品,但两者的尺寸相同。 UpdateOrCreate 方法,我不确定,因为我的 product_id 不是唯一的,例如,唯一的“事物”唯一是 order_id,因为产品与 order_id 相关。 product_id 是 products 表的外键。 quantitypriceItem 用于结帐的其他内容

标签: php html laravel laravel-blade laravel-7


【解决方案1】:

我们开始吧,我在这里找到了解决方案,如果它可以帮助你们中的一些人:

          foreach($request->product_id as $key => $product){
                    $orderedProducts = new OrderedProduct;
                    $orderedProducts->product_id = $product;
                    $orderedProducts->order_id = $order->id;
                    $orderedProducts->quantity = $request->quantity;
                    $orderedProducts->price    = $request->price[$key];
                    $orderedProducts->size     = $request->size[$key];
                    $orderedProducts->save();
          }

所以我只是改变了我的控制器,现在它工作得很好!感谢社区的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-22
    • 2020-10-03
    • 2021-02-09
    • 2013-05-23
    • 2018-12-07
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多