mardi 25 juin 2019

How to get total and subtotal in products laravel

I have Orders table, products table and OrderProduct table. In Orderproduct table I have quantity,total and subtotal columns, Every order has many products. The products price gets multiplied by the amount ordered and then stored inside a row called total in OrderProduct table and also the product gets multiplied with quantity to get Subtotal of each product and stored inside a row called Subtotal. The problem is how do I get subtotal and total of every order, (so every order should have total amount and also in every product should have Subtotal). Quantity works fine.

Here are my codes.

Order.php

 class Order extends Model
 {

public function products()
 {
    return $this->belongsToMany('App\Product')->withPivot('quantity','total','Subtotal');
 }
 }

Checkout Controller

   public function store(Request $request)
   {
    //Insert into order product table
    if ($order) {
        foreach(session('cart')  as $productId =>$item) {
           if (empty($item)) {
               continue;
           }
           $product = product::find($productId);
           OrderProduct::create([
            'order_id' => $order->id ?? null,
            'product_id' => $productId,
            'quantity' => $item['quantity'],
            'total' =>$item['total'],
            'Subtotal' =>$item['Subtotal'],

        ]);
       }
       return $order;
    }

My Cart looks like this

     public function addToCart($id)
    {
    $userId = Auth::id();
    $products = Product::find($id);
    if(!$products) {

        abort(404);

    }

    $cart = session()->get('cart');

    if(!$cart) {

        $cart = [
                $id => [
                    "name" => $products->name,
                    "quantity" => 1,
                    "price" => $products->price,
                    "image" => $products->image
                ]
        ];

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

        return redirect()->back()->with('success', 'Product added to cart successfully!');
    }

    if(isset($cart[$id])) {

        $cart[$id]['quantity']++;

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

        return redirect()->back()->with('success', 'Product added to cart successfully!');

    }

    $cart[$id] = [
        "pro_name" => $products->pro_name,
        "quantity" => 1,
        "pro_price" => $products->pro_price,
        "image" => $products->image
    ];

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

    return redirect()->back()->with('success', 'Product added to cart successfully!');
    }

And my loop

      @foreach ($order->products as $product)
      {
        <td>$</td> 
        <td>$</td> 
       }
       @endforeach

Any help will be appreciated.



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire