【发布时间】: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不在表中,那么它将创建。如果已经存在,那么它将更新 -
顺便说一句,您使用所有动态数组输入,而不是
quantity和priceItem„ 但为什么呢? -
嗯,我同意嵌套循环,我已经尝试不使用这种循环,但是当我这样做时,例如,我有一个大小为 30 的产品另一个有 80 个,它按预期创建了 2 个产品,但两者的尺寸相同。 UpdateOrCreate 方法,我不确定,因为我的 product_id 不是唯一的,例如,唯一的“事物”唯一是 order_id,因为产品与 order_id 相关。 product_id 是 products 表的外键。
quantity和priceItem用于结帐的其他内容
标签: php html laravel laravel-blade laravel-7