我已经创建了这个在线购物车,如果买家购买了一个结账项目,效果很好,但是当买家购买多件商品时,会出现问题。
我需要帮助,以便购物车中的商品可以全部放入数据库。我的问题是将购物车中的多个产品作为单独的行插入数据库。有人可以帮忙吗?
我想要这样,因为已购买的商品可以由购买商品的买家审核。所以我可以得到“product_id”。
表:订单
列:
id int(10) UN AI PK
user_id int(11)
product_id int(11)
item_name text
payment varchar(255)
courier varchar(255)
note text
quantity int(11)
total int(11)
status int(11)
OrderController.php
public function NewOrder(Request $request)
{
$this->validate($request, [
'payment' => 'required',
'courier' => 'required',
]);
$cart = Session::get('cart');
$total = 0;
foreach ($cart as $data) {
$total_harga = $data['harga'] * $data['qty'];
$qty = $data['qty'];
}
$quantity = $qty + 0;
$new = new Orders();
$new->user_id = Auth::user()->id;
$new->product_id = $data['id'];
$new->item_name = $data['item_name'];
$new->payment = $request['payment'];
$new->courier = $request['courier'];
$new->note = $request['note'];
$new->quantity = $quantity;
$new->total = $total_harga;
$new->status = 1;
$new->save();
$id = $new->id;
Session::forget('cart');
return redirect()->route('order.status', $id);
}
如何将购物车中的多个产品作为单独的行插入数据库?
感谢您的回答:)
答案 0 :(得分:1)
要在数据库中添加多个有序项,您必须添加2个表; 订单和订单产品。
要在下单后添加所有ordered items
,请再创建一个表格,例如ordersproducts
,您将在其中添加商品详细信息,例如产品ID,产品名称,描述,单价,数量和{{ 1}}表必须具有订单的主要细节,例如订单号,用户ID,总产品,总金额,订单日期。因此,orders
和orders table
将如下所示:
表:订单
ordersproducts table
表:ordersproducts
id int(10) UN AI PK
user_id int(11)
payment varchar(255)
courier varchar(255)
note text
total_quantity int(11)
total_amount int(11)
status int(11)
<强> OrderController.php 强>
id int(10) UN AI PK
order_id int(11)
product_id int(11)
item_name text
quantity int(11)
price int(11)
请根据您的要求更改上述代码。我刚刚给你一个提示,这样你就可以制作2个表,用于存储订单的主要细节,还有一个用于存储所需的完整产品订单。
答案 1 :(得分:-1)
您可以创建这些产品的数组,以便$products
包含要插入的所有行。您可以使用laravel createMany
选项同时插入多行
$products=[$product1, $product2, $product3....$productn];
$orders =Orders::insert($products);
您的代码也可以重写为
$cart = Session::get('cart'); //all items in cart
$total=0;
$products=[];
foreach ($cart as $data) { //for each of the item
$row=[];
$row['total']= $data['harga'] * $data['qty'];
$row['quantity']= $data['qty'];
$row['user_id'] = Auth::user()->id;
$row['product_id'] = $data['id'];
$row['item_name'] = $data['item_name'];
$row['payment'] = $request['payment'];
$row['courier'] = $request['courier'];
$products[] =$row; //add row
}
$orders =Orders::insert($products);
print_r($orders);