2016-05-12 10 views
1

Mein Hauptzweck ist es, meine Bestseller-Produkte zu zeigen.Laravel 5.1 - mysql orderby der höchste Wert der Zählung distinct

Mein Tabellenname ist ORDER_ITEM mit Spalten (id, cart_id, product_id, etc ..)

Controller:

$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> 

das Ergebnis dieser Aktion foreach ist: 2, 6, 2, 4, 6, 6.

Mein Zweck ist es, Ergebnisse zu zeigen: 6,2,4. (Wir haben drei 6, so könnte es die erste sein, zwei 2 könnte es an zweiter Stelle gehen und eine 4 könnte die letzte gehen) Ich möchte die höchste Anzahl discot Zahlen zuerst in dieser Reihenfolge zu zeigen.

tryed ich in meinem Controller den Code:

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

aber es funktioniert nicht mit einer Nachricht:

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

Antwort

1

Hier, wie Sie die distinct Methode (und orderBy) verwenden sollte:

$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

Ich habe einen Fehler: In Gültiges Argument für foreach() (View: C: \ wamp64 \ www \ test3 \ ressourcen \ ansichten \ master \ master.blade.php) –

+0

Mein schlechtes ... Ich habe meine Antwort nur neu geschrieben. Ich vergaß abount '-> get()' –

+0

Ein weiterer Fehler: Fataler Fehler: Aufruf an ein Element Funktion pluck() auf Array –