Как посчитать общую стоимость заказа? - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть эти таблицы:

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

products:
id -  name -   price  - quantity
1     test1    100$       5 
2     test2    50$        5 


order_product:
order_id - product_id - quantity
 1           1            2
 1           2            2

cities:
id - name - shipping_charges
1    NY       30$

Как подсчитать общую стоимость этих столбцов:

для каждого продукта:

  products(price) * order_product(quantity)  

для всех товары с shipping_charges

- products(price) * order_product(quantity) + cities(shipping_charges) 

Ответы [ 3 ]

1 голос
/ 01 февраля 2020

Вы можете получить столбцы таблицы pivot , обратившись к атрибуту pivot, это было там в течение , в то время как .

По умолчанию в объекте сводки будут присутствовать только ключи модели. Если ваша сводная таблица содержит дополнительные атрибуты, вы должны указать их при определении отношения:

В вашем случае вы можете определить отношение как в следующем коде:

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

Сейчас столбец quantity в таблице order_product будет доступен через атрибут pivot (например, $order->products()->first()->pivot->quantity).

В конце приведем полученный код для расчета общей суммы заказа:

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

$total += $order->address()->city->shipping_charges

Источник: https://laravel.com/docs/master/eloquent-relationships#many-ко-многим

1 голос
/ 01 февраля 2020

Найдите сумму поля, используя laravel collection, выполнив что-то вроде этого;

$ profuctTotal = Product :: all () -> sum ('price'); Сделайте то же самое для других, использующих модели Eloquent.

0 голосов
/ 01 февраля 2020
  • Если вы не используете какую-либо модель, используйте этот необработанный запрос

$ orderitem = DB :: table ('order_product') -> where ('order_id', 'your идентификатор заказа ') -> 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...