2016-08-07 15 views
2

私のproductsテーブルには、それぞれProductretailerという列があります。私の見解では、テーブルからそのretailer列のすべてユニークの値を取得して表示しようとしています。 1つの列には別の値(例:retailer)しか必要ではありません。Laravel 5.2の単一の列に一意の値を取得する方法は?

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

Here私はgroupBy('retailers)が一意の値を取得するだろうと読んだ:ここに私の試みです。それは確かに働いたが、私はすべての製品が含まれているビューに配列$productsを渡しておりますので、私は$productsをループすることは、より効率的だろうと思った:

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

が、それは動作しませんでした。

:私はここで間違っていますか?これについてもっと効率的な方法がありますか?この場合、クエリービルダー(Eloquentではなく)に頼る方が良いでしょうか?

ありがとうございました!

+4

では、 'てみました - >明確な( '小売店')' – Ohgodwhy

+0

これはあまりにも働いてきたはずです: '$製品 - >ユニークな( '小売店') - >( '小売店')を摘み取ります' ;別のクエリを作成する必要はありません。 – Alex

答えて

1

をすることができます。もちろん、

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

EDIT

を試してみてください。お使いのコントローラ

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

ビューを渡す代わりに '$ products'配列をループする方法はありますか? – Alex

関連する問題