info@a-coding-project.de

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]

Laravel Entwickler gesucht?

Wir haben bereits viel Erfahrung im Umgang mit Laravel und Vue.js.
Nehmen Sie gerne unverbindlich Kontakt zu uns auf.

zum Angebot

Über uns

Stefan Wienströer

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

Auch interessant