2016-05-12 6 views
1

私の主な目的は私のベストセラー商品を見せることです。Laravel 5.1 - mysql orderbyの個数が最も高い値

私のテーブル名が列を持つ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。 (私たちは3つの6を持っているので、それは最初のものかもしれない、2つは2番目に行くかもしれないし、最後には4つあるかもしれない) 私は、この順序で最初に最も高いカウントのdistict番号を表示したい。

私は自分のコントローラにコードしようと試み:

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

を、それはメッセージで失敗します。あなたはdistinct方法(およびorderBy)を使用する方法をここで

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

答えて

1

$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(); 
+0

エラーがあります: In foreach()(View:C:\ wamp64 \ www \ test3 \ resources \ views \ master \ master.blade.php)の有効な引数 –

+0

私の悪い...私はちょうど私の答えを再編集します。 –

+0

もう1つのエラー: 致命的なエラー:配列のメンバー関数pluck()を呼び出す –