How to count the total price of order?

前端 未结 3 866
梦如初夏
梦如初夏 2021-01-28 02:25

I have these tables:

Orders: 
id - status -user_id - address_id 
1     await    1          1 

products:
id -  name -   price  - quantity
1     test1    100$             


        
相关标签:
3条回答
  • 2021-01-28 02:42

    You can retrieve the pivot table columns by accessing the pivot attribute, this has been there for a long while.

    By default, only the model keys will be present on the pivot object. If your pivot table contains extra attributes, you must specify them when defining the relationship:

    In your case you can define the relationship like in the following code:

    class Order extends Model {
        public function products()
        {
            return $this->belongsToMany(Order::class)->withPivot('quantity')
        }
    }
    

    Now the quantity column on the order_product table will be accessible via the pivot attribute (e.g. $order->products()->first()->pivot->quantity).

    In the end, here is the resulting code to calculate the order total:

    $total = 0;
    foreach ($product as $products) {
        $total += $product->price * $product->pivot->quantity
    }
    
    $total += $order->address()->city->shipping_charges
    

    Source: https://laravel.com/docs/master/eloquent-relationships#many-to-many

    0 讨论(0)
  • 2021-01-28 02:55

    Find the sum of a field by using laravel collection by doing something like this;

    $profuctTotal=Product::all()->sum('price'); Do same for others using Eloquent models.

    0 讨论(0)
  • 2021-01-28 03:03
    • If you don't use any model then use this raw query

    $orderitem = DB::table('order_product')->where('order_id', 'your order id')->get();

        // Now create a foreach loop for get total price 
    
        $total = 0;
    
        foreach($orderitem as $order){
            $porduct = DB::table('products')->where('id', $order->product_id)->first();
            $total += $porduct->price * $order->quantity;
        }
        // now you got sub total
        $shipping = DB::table('cities')->where('id', 'Orders table address column')->first();
        $subtotal = $tatal + $shipping->shipping_charges;
    
    0 讨论(0)
提交回复
热议问题