Laravel 5.1 - mysql orderby最高值count

时间:2016-05-12 10:18:55

标签: php mysql laravel

我的主要目的是展示我最畅销的产品。

我的表名是order_item,包含列(id,cart_id,product_id等等)。

控制器:

$orderitems = DB::table('order_items')
        ->select('product_id')->get();

HTML:

<div id="menu2" class="tab-pane fade">
    @foreach($orderitems as $order)
        {{$order->product_id}}<br>
    @endforeach
</div>

此foreach动作的结果是:2,6,2,4,6,6。

我的目的是显示结果:6,2,4。 (我们有三个6所以它可能是第一个,两个2它可能是第二个,一个4它可能是最后一个) 我希望最高计数的distict数字按此顺序显示。

我在我的控制器中尝试了代码:

$orderitems = DB::table('order_items')
        ->select('product_id')->orderBy(distict(count('product_id')));

但它失败并显示一条消息:

Fatal error: Call to undefined function App\Http\Controllers\distict()

1 个答案:

答案 0 :(得分:1)

此处您应该如何使用distinct方法(和orderBy):

$orderitems = DB::table(DB::raw('(SELECT product_id, COUNT(*) as product_count FROM order_items GROUP BY product_id) AS subquery'))
    ->select('product_id')
    ->orderBy('product_count')
    ->get();