gpt4 book ai didi

php - 如何在 Laravel 中获得最畅销的产品?

转载 作者:行者123 更新时间:2023-12-05 06:12:58 26 4
gpt4 key购买 nike

我的数据库结构:

products
-- name
-- price
-- qty

orders
-- user_id
-- status ... etc

order_product
-- order_id
-- product_id
-- qty
-- product_price_after_discount ( nullable )

在以下情况下,我需要使用 total_sells_of_product 获取最畅销的产品:

  • 订单status == 'approved'
  • 如果有 product_price_after_discount,请忽略原始产品价格并计算在内。

我的错误关闭:

  $topSellingProducts = Product::selectRaw('
products.id,
products.trade_name,
products.company_name
')
->leftJoin('order_product','order_product.product_id','=','products.id')
->where('status','approved')
->groupBy('products.id')
->orderByDesc('total_sales')
->get();

最佳答案

如果在计算销量最高的产品时要考虑订单中的数量:

DB::table('products')
->select([
'products.id',
'products.trade_name',
'products.company_name',
DB::raw('SUM(order_product.qty) as total_sales'),
DB::raw('SUM(IFNULL(product_price_after_discount, products.price) * order_product.qty) AS total_price'),
])
->join('order_product', 'order_product.product_id', '=', 'products.id')
->join('orders', 'order_product.order_id', '=', 'orders.id')
->where('orders.status','approved')
->groupBy('products.id')
->orderByDesc('total_sales')
->get();

如果您想对订单中的每个产品都考虑一次,则替换 SUM(order_product.qty) as total_salesCOUNT(*) as total_sales .

关于php - 如何在 Laravel 中获得最畅销的产品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63451043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com