在订单表上保存购物车详细信息

时间:2019-08-28 11:02:51

标签: php sql laravel cart

这些是购物车详细信息

$cart[$id] = [

            "name" => $food->food_item,
            "quantity" => 1,
            "price" => $food->price,
            "restaurant" =>$food->restaurant_id,

        ];

    session()->put('cart', $cart);

我希望当用户单击按钮下达订单时将这些项目详细信息保存在订单表中的相应字段中 //创建订单

order= new Order;

我将如何保存购物车?

3 个答案:

答案 0 :(得分:0)

在确认后,使用Order模型将购物车信息保存在数据库中,而不是将其保留在会话中,以避免在刷新后将其丢失

$order = Order::create([
            "name" => $food->food_item,
            "quantity" => 1,
            "price" => $food->price,
            "restaurant" =>$food->restaurant_id,
         ]);

此处的旁注:我建议使用this package来管理您的购物车,并使用其数据库驱动程序来避免所有的麻烦(不要重蹈覆辙)

答案 1 :(得分:0)

首先,您必须创建一个Order模型的新实例。然后,

$order = new Order();

$order->food = $food->food_item;
$order->quantity = 1;
$order->price = $food->price;
$order->restaurant = $food->restaurant_id;

$order->save();

答案 2 :(得分:0)

您的问题尚不清楚,但是我想您想保存订单详细信息。为此,您需要为OrderOrderItem创建一个关系,以便在保存cart详细信息时,它将在Order表中保存一个订单,并且将订单商品保存在OrderItem表中。

您可以通过这种方式获得购物车。

$oldCart = Session::get('cart'); 
$cart = new Cart($oldCart);

$order = new Order;
$order->quantity = 1;
$order->price = $food->price;
$order->restaurant = $food->restaurant_id;
$order->customer_id = auth()->user()->id; // you can add this to tag the customer info
$order->save();

$orderItems = [];
foreach ($cart->items as $ItemId => $item) {
    $orderItems[] = [
        'order_id' => $order->id,
        'food_id' => $foodId
        'quantity' => $item['qty']
    ];
}
OrderItem::insert($orderItems);

});