Laravel查询 - 获得最畅销的商品

时间:2016-11-11 17:20:52

标签: laravel eloquent sum max

我是Laravel的新手,我使用的是Laravel 5.1。

我在数据库中有这个表: enter image description here

这是购买itesm的表格。我想知道计算最畅销优惠券的最佳方式是什么 - 每次购买都有voucher_id ......

3 个答案:

答案 0 :(得分:1)

如果你想使用雄辩的

,可能会做这样的事情
   $Voucher = Sales::sortBy(function ($sale) {
     return $sale->voucher_id->count();
    }, SORT_REGULAR, true)->take(1)->get();

答案 1 :(得分:1)

最好的方法是使用一个查询进行计数,并在同一查询中获取畅销书的ID:

PurchasedItem::select(DB::raw('COUNT(id) as cnt', 'voucher_id'))->groupBy('voucher_id')->orderBy('cnt', 'DESC')->first();

答案 2 :(得分:-2)

我将尝试并成功执行此代码。您可以尽力而为。

<?php      

    $topsales = DB::table('purchase_order_details')
           ->leftJoin('products','products.id','=','purchase_order_details.product_id')
           ->select('products.id','products.name','purchase_order_details.product_id',
                DB::raw('SUM(purchase_order_details.quantity) as total'))
           ->groupBy('products.id','purchase_order_details.product_id','products.name')
           ->orderBy('total','desc')
           ->limit(6)
           ->get();

   ?>