如何在Laravel中获得销售订单清单(交易)?

时间:2019-03-05 01:27:14

标签: php laravel orm eloquent

我有两个数据库表,“ product”和“ transactions”都很低

**Product.php**

product_id   product_name
--------------------------
1           |      A
2           |      B
3           |      C

**Transactions.php**

transaction_id       product_id
--------------------------------
1                |       1
2                |       1
3                |       1
4                |       3
5                |       2
6                |       3

从事务表中。因此,销售订单(最佳销售)是 [A C B]。我尝试了以下类似操作,但不起作用。

$saleTtransaction = SaleTransaction::select('product_id', DB::raw('count(*) as total'))->groupBy('product_id')->get();

感谢所有评论,谢谢。

1 个答案:

答案 0 :(得分:1)

这是您可能要使用的原始查询:

SELECT
    p.product_name,
    COUNT(t.product_id) AS total
FROM products p
LEFT JOIN transactions t
    ON p.product_id = t.product_id
GROUP BY
    p.product_name
ORDER BY
    total DESC;

这是上面的Laravel代码:

$saleTtransaction = DB::table("products p")
    ->select("p.product_name",
             DB::raw('COUNT(t.product_id) AS total'))
    ->join("transactions t", "p.product_id", "=", "t.product_id")
    ->groupBy("p.product_name")
    ->orderBy('total', 'desc')
    ->get();

这假定每个产品始终具有唯一的名称。如果没有,那么从技术上讲,我们应该同时按产品名称和ID进行汇总。