我的主要目的是展示我最畅销的产品。
我的表名是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()
答案 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();