【问题标题】:Laravel - Storing a shopping cart has Multiple Data to the DatabaseLaravel - 将购物车存储到数据库中有多个数据
【发布时间】:2018-05-09 18:59:56
【问题描述】:

我已经创建了这个在线购物车,如果买家购买一个结帐商品,效果很好,但是当买家购买多个商品时,就会出现问题,无法正常工作。

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

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

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

谢谢你的回答:)

【问题讨论】:

  • 在产品和订单之间创建多对多关系。
  • @tofa-maulana-irvan 您需要在 foreach 中添加项目插入
  • 需要创建2个表;一种用于订单,一种用于订购产品。 Ordersproducts 表将出现在 foreach 中,其中将包含您的所有项目详细信息
  • 主订单表将只包含订单id、总价、用户id
  • @AmitGupta 你能给我一个示例代码吗?

标签: php mysql laravel session laravel-5


【解决方案1】:

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

要在下订单后添加您所有的ordered items,请再创建一个表格,例如ordersproducts,您将在其中添加您的项目详细信息,例如产品 ID、产品名称、描述、单价、数量和 orders 表必须有订单的主要细节,如订单号、用户 ID、总产品、总金额、订单日期。所以orders tableordersproducts table 将如下所示:

表格:订单

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)

表格:ordersproducts

id int(10) UN AI PK
order_id int(11) 
product_id int(11) 
item_name text 
quantity int(11) 
price 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->payment = $request['payment'];
$new->courier = $request['courier'];
$new->note = $request['note'];
$new->total_quantity = $quantity;
$new->total_amount = $total_harga;
$new->status = 1;
$new->save();

$order_id = DB::getPdo()->lastInsertId();

foreach ($cart as $data) {
    $total_harga = $data['harga'] * $data['qty'];
    $qty = $data['qty'];
    $OrderPro = new Ordersproducts;
    $OrderPro->order_id = $order_id;
    $OrderPro->product_id = $data['product_id'];
    $OrderPro->product_name = $data['product_name'];
    $OrderPro->product_price = $data['product_price'];
    $OrderPro->product_quantity = $data['product_quantity'];
    $OrderPro->save();
}

Session::forget('cart');
return redirect()->route('order.status', $id);
}

请根据您的要求对上述代码进行更改。我刚刚给了您一个提示,以便您可以制作 2 个表格,一个用于存储订单的主要详细信息,另一个用于存储您想要的完整产品订购详细信息。

【讨论】:

    猜你喜欢
    • 2013-02-05
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 2013-05-21
    相关资源
    最近更新 更多