Laravel Collection
Laravel-Collection bieten dir die Möglichkeit, Arrays auf verschiedene Arten zu transformieren.
Collections erstellen
Die Erstellung einer Collection aus einem Array geschieht über die collect
-Funktion. Dieser übergeben wir unser Array und erhalten als Ergebnis eine Collection zurück.
Diese Collection können wir nun weiterhin wie ein Array bearbeiten, haben aber darüber hinaus die Möglichkeit Collection-Funktionen zu verwenden.
$array = ['eins', 'zwei', ['2te Dimension' => 'drei']]; $collection = collect($array); // verwandelt $array in eine Collection
Daten, die mit Laravel Eloquent aus der Datenbank abgefragt wurden, sind übrigens bereits Collections und müssen nicht erst per collect
umgewandelt werden.
Collection-Funktionen
Besonders praktisch an Collections ist die Möglichkeit, mehrere Funktionen hintereinander auf eine Collection anzuwenden. Bei Transformationen, die per Callback übergeben werden müssen wir nur darauf achten, das Ergebnis jeweils per return
zurückzugeben.
$transformiert = $collection->reverse()->map(function($value, $key) { // Collection transformieren return ... });
Nützliche Funktionen
Collections enthalten eine Fülle an Funktionen, um Arrays zu verändern.
Hier sind ein paar der wichtigsten:
map
Mit map
ist die einfachste Funktion um einezelne Transformationsregel per Callback-Funktion zu übergeben, die auf jedes Element angewendet wird.
$transformation = $collection->map(function($value, $key) { return $value + 1; });
sortBy
Angenommen wir haben ein mehrdimensionales Array mit mehreren Keys pro Element. Dann können wir per sortBy
bestimmen anhand welchen Keys unsere Collection sortiert werden soll.
$array = [ ['Alter' => 23, 'Name' => 'Jürgen'], ['Alter' => 18, 'Name' => 'Nadine'] ]; $transformation = collect($array)->sortBy('Alter');
Wenn absteigend sortiert werden soll, kann stattdessen die sortByDesc
Funktion verwendet werden.
splice
splice
schneidet alle Elemente ab einem bestimmten Index ab.
$array = ['Melanie', 'Wolf', 'Dieter', 'Susanne']; $transformation = collect($array)->splice(1); // alles ab einschließlich 'Wolf'
toJson
Besonders nützlich, wenn Daten per Ajax abgefragt werden: Die Collection wird in das Json-Format transformiert.
$array = [ ['Alter' => 23, 'Name' => 'Jürgen'], ['Alter' => 18, 'Name' => 'Nadine'] ]; $json = collect($array)->toJson();
contains
contains
gibt true
oder false
zurück, je nachdem eine Collection den gesuchten Wert enthält, oder nicht.
$array = ['eins', 'zwei', 'vier']; $json = collect($array)->contains('vier'); // ergibt true
filter
Die filter
-Funktion kann zum Herausfiltern von Elementen aus einer Collection verwendet werden. Die Filterbedingung wird dabei direkt in der übergebenen Callback-Funktion angegeben.
$array = [2, 4, 8, 16, 23, 32]; $filtered = collect($array)->filter(function($wert, $key) { return $wert % 2 === 0; }); // Ergebnis: [2, 4, 8, 16, 32]
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Über uns

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project