2016-08-07 26 views
2

In meiner products Tabelle hat jede Product eine Spalte namens retailer. Aus meiner Sicht versuche ich, alle eindeutigen Werte für diese retailer Spalte aus der Tabelle abzurufen und anzuzeigen. Beachten Sie, dass ich nur bestimmte Werte für eine einzelne Spalte, d. H. retailer benötigen. Hier ist mein Versuch:Wie holen Sie eindeutige Werte für eine einzelne Spalte in Laravel 5.2?

@foreach(\App\Product::select('retailer')->groupBy('retailer')->get() as $retailer) 
    {{$retailer->retailer}} 
@endforeach 

Here ich gelesen habe, dass groupBy('retailers) würde die eindeutigen Werte erhalten. Das in der Tat funktioniert, aber da ich ein Array bin vorbei $products zu der Ansicht, die alle Produkte enthält, dachte ich Schleife durch $products wäre effizienter:

@foreach($products->select('retailer')->unique() as $retailer) 
    {{$retailer}} 
@endforeach 

aber das hat nicht funktioniert.

Q: Was mache ich hier falsch? Gibt es einen effizienteren Weg, dies zu tun? Ist es in diesem Fall besser, auf den Abfrage-Generator (statt Eloquent) zurückzugreifen?

Vielen Dank!

+4

Haben Sie versucht, '-> distinct ('Vermittler')' – Ohgodwhy

+0

Dies sollte auch gearbeitet habe: '$ Produkte-> einzigartig ('Vermittler') -> zupfen ('Vermittler')' ; keine Notwendigkeit, eine separate Abfrage zu machen. – Alex

Antwort

1

Versuchen

@foreach(App\Product::distinct()->get(['retailer']) as $product) 
    {{$product->retailer}} 
@endforeach 

EDIT

Natürlich können Sie. In Ihrem Controller

$products = App\Product::distinct()->get(['retailer']); 
foreach($products as $product) { 
    // do your magic 
} 
+0

Gibt es eine Möglichkeit, dass ich das '$ products'-Array durchlaufen könnte, statt dass ich mit der Ansicht passiere? – Alex