2017-10-11 3 views
0

Ich versuche, die Anzahl der einzigartigen Marken aus meiner Produkttabelle mit ihrer Anzahl von einer Laravel-Sammlung zu erhalten.Anzahl der eindeutigen Werte mit dem Spaltennamen in Laravel 5.2 Collection

Ich konnte dies mit einer spezifischen Abfrage für die Produkte tun, aber der Grund, warum ich eine Sammlung jetzt verwende, ist, weil ich auch die Produkt Herkunft (Land), Bedingungen (Used/New) der Produkte erhalten möchte und ich dachte, es wäre viel besser, eine Sammlung von einer Abfrage zu verwenden, anstatt drei separate Abfragen für jede Daten zu haben.

Der folgende Code funktioniert, zeigt jedoch nicht die Anzahl für jede einzelne Marke an.

Hier ist die Tabelle enter image description here

Hier ist mein Controller

$products = DB::table('products') 
->select('products.*') 
->whereNull('products.deleted_at') 
->get(); 

$BrandCollection = collect($products); 
$Brands = $BrandCollection->unique('Brand')->sortBy('Brand')->keyBy('Brand')->pluck('Brand'); 

das Ergebnis i suchen bin also für ist

HP 3
Toshiba 2
Lenovo 1

Ich dachte, es könnte mit concat für die Sammlung getan werden, aber da ich auf Laravel 5.2 bin, suche ich nach anderen Lösungen.

Antwort

0

Wenn Sie wirklich Sammlungen verwenden möchten (nicht Eloquent) Sie es wie folgt tun:

$brandsWithCount = $BrandCollection->groupBy('Brand')->map(function($values) { 
    return $values->count(); 
})->sort()->reverse(); 

Zum Beispiel, wenn Sie $brandCollection wie folgt festgelegt:

$BrandCollection = collect([ 
    ['Brand' => 'HP'], 
    ['Brand' => 'HP'], 
    ['Brand' => 'HP'], 
    ['Brand' => 'Toshiba'], 
    ['Brand' => 'Toshiba'], 
    ['Brand' => 'Lenovo'], 
]); 

Ergebnis sein wird:

Collection {#372 
    #items: array:3 [ 
    "HP" => 3 
    "Toshiba" => 2 
    "Lenovo" => 1 
    ] 
} 

wie erwartet.

+0

Perfekt! Lief wie am Schnürchen. – user3659497

+0

Wie würden Sie die Sortierung anwenden? Coz-sort ('Marke) -> reverse() funktioniert nicht – user3659497

+0

@ user3659497 Es funktioniert für mich, haben Sie es verifiziert? 'sort' sollte aufsteigend sortieren und' reverse' wird die Reihenfolge umkehren –

Verwandte Themen