Laravel - 存储购物车有多个数据到数据库

时间:2017-11-26 11:35:37

标签: php mysql laravel session laravel-5

我已经创建了这个在线购物车,如果买家购买了一个结账项目,效果很好,但是当买家购买多件商品时,会出现问题。

我需要帮助,以便购物车中的商品可以全部放入数据库。我的问题是将购物车中的多个产品作为单独的行插入数据库。有人可以帮忙吗?

我想要这样,因为已购买的商品可以由购买商品的买家审核。所以我可以得到“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);
}

如何将购物车中的多个产品作为单独的行插入数据库?

感谢您的回答:)

2 个答案:

答案 0 :(得分:1)

要在数据库中添加多个有序项,您必须添加2个表; 订单订单产品

要在下单后添加所有ordered items,请再创建一个表格,例如ordersproducts,您将在其中添加商品详细信息,例如产品ID,产品名称,描述,单价,数量和{{ 1}}表必须具有订单的主要细节,例如订单号,用户ID,总产品,总金额,订单日期。因此,ordersorders 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);