Eine Collection in Laravel ist eine spezielle Art von Array, die von Eloquent ORM verwendet wird, um Daten aus der Datenbank abzufragen. Es ist eine Klasse, die von PHP’s ArrayObject erbt und erweitert diese um eine Reihe von nützlichen Methoden, die es Entwicklern erleichtern, mit den Daten zu arbeiten.
Eine Collection kann erstellt werden, indem man ein Array an den Collection-Konstruktor übergibt:
$collection = new Collection([1, 2, 3, 4, 5]);
Eine Collection kann auch durch verschiedene Methoden von Eloquent-Modellen erstellt werden, wie z.B. all(), get(), find(), where(), etc.
Ein Beispiel dafür wäre:
$users = User::all();
Die Collection hat viele Methoden die es erleichtern mit den Daten zu arbeiten, wie z.B. each(), map(), filter(), sort(), count(), etc. Diese Methoden erlauben es Entwicklern, die Daten zu manipulieren, zu filtern, zu sortieren und zu transformieren, ohne die ursprünglichen Daten zu beeinträchtigen.
Welche zusätzlichen Methoden bietet eine Collection?
Einige Beispiele:
all()
: Gibt alle Elemente der Collection zurückaverage()
: Berechnet den Durchschnittswert aller Elemente in der Collectionchunk()
: Zerlegt die Collection in kleinere Gruppencollapse()
: Führt alle Arrays in der Collection zusammenconcat()
: Fügt ein Array oder eine Collection zu der aktuellen Collection hinzucontains()
: Überprüft, ob ein bestimmter Wert in der Collection enthalten istcount()
: Gibt die Anzahl der Elemente in der Collection zurückdiff()
: Gibt die Elemente zurück, die in der aktuellen Collection aber nicht in der übergebenen Collection enthalten sindeach()
: Führt eine gegebene Callback-Funktion für jedes Element in der Collection ausevery()
: Überprüft, ob alle Elemente in der Collection eine bestimmte Bedingung erfüllenexcept()
: Gibt alle Elemente der Collection zurück, außer denen, die in der gegebenen Liste enthalten sindfilter()
: Filtert die Collection basierend auf einer gegebenen Bedingungfirst()
: Gibt das erste Element der Collection zurückflatten()
: Glättet eine mehrdimensionale Collectionflip()
: Kehrt die Schlüssel-Wert-Beziehungen in der Collection umforget()
: Entfernt ein bestimmtes Element aus der Collectionget()
: Gibt einen bestimmten Wert aus der Collection zurückgroupBy()
: Gruppiert die Collection nach einem bestimmten Schlüsselhas()
: Überprüft, ob ein bestimmter Schlüssel in der Collection vorhanden istimplode()
: Fügt die Werte der Collection zu einem String zusammenintersect()
: Gibt die Elemente zurück, die sowohl in der aktuellen Collection als auch in der übergebenen Collection enthalten sindisEmpty()
: Überprüft, ob die Collection leer istisNotEmpty()
: Überprüft, ob die Collection nicht leer istkeys()
: Gibt die Schlüssel der Collection zurücklast()
: Gibt das letzte Element der Collectionmap()
: Wendet eine gegebene Callback-Funktion auf alle Elemente der Collection an und gibt eine neue Collection mit den Ergebnissen zurückmax()
: Gibt das höchste Element der Collection zurückmin()
: Gibt das niedrigste Element der Collection zurückonly()
: Gibt nur die angegebenen Schlüssel der Collection zurückpluck()
: Extrahiert einen bestimmten Wert aus jedem Element der Collectionpop()
: Entfernt das letzte Element der Collectionprepend()
: Fügt ein Element am Anfang der Collection hinzupull()
: Entfernt ein bestimmtes Element aus der Collection und gibt den Wert zurückpush()
: Fügt ein Element am Ende der Collection hinzuput()
: Setzt einen Wert in der Collectionrandom()
: Gibt ein zufälliges Element der Collection zurückreduce()
: Reduziert die Collection auf einen einzigen Wertreject()
: Filtert die Collection und gibt die Elemente zurück, die eine bestimmte Bedingung nicht erfüllenreverse()
: Kehrt die Reihenfolge der Elemente in der Collection umsearch()
: Sucht nach einem bestimmten Wert in der Collectionshift()
: Entfernt das erste Element der Collectionshuffle()
: Mische die Elemente der Collection zufälligslice()
: Schneidet einen Teil der Collection aussort()
: Sortiert die Elemente der CollectionsortBy()
: Sortiert die Elemente der Collection nach einem bestimmten SchlüsselsortByDesc()
: Sortiert die Elemente der Collection in absteigender Reihenfolge nach einem bestimmten Schlüsselsplice()
: Entfernt und ersetzt Elemente in der Collectionsplit()
: Zerlegt die Collection in mehrere kleinere Collectionssum()
: Berechnet die Summe aller Elemente in der Collectiontake()
: Gibt die ersten n Elemente der Collection zurücktap()
: Führt eine gegebene Callback-Funktion aus und gibt die Collection unverändert zurücktimes()
: Führt eine gegebene Callback-Funktion n-mal austoArray()
: Konvertiert die Collection in ein ArraytoJson()
: Konvertiert die Collection in einen JSON-Stringunique()
: Entfernt alle doppelten Elemente aus der Collectionunless()
: Führt eine gegebene Callback-Funktion nur dann nicht aus, wenn eine bestimmte Bedingung erfüllt istunshift()
: Fügt ein Element am Anfang der Collection hinzuvalues()
: Gibt die Werte der Collection zurückwhen()
: Führt eine gegebene Callback-Funktion nur dann aus, wenn eine bestimmte Bedingung erfüllt istwhere()
: Filtert die Collection basierend auf einer gegebenen BedingungwhereIn()
: Filtert die Collection basierend auf einer Liste von WertenwhereNotIn()
: Filtert die Collection basierend auf einer Liste von Werten, die nicht enthalten sindzip()
: Kombiniert die Werte der Collection mit den Werten eines Arrays oder einer anderen Collection.
Was macht map bei einer Collection in Laravel?
Die Methode map() in Laravel’s Collection ermöglicht es Entwicklern, jeden Wert der Collection durch eine angegebene Callback-Funktion zu transformieren. Diese Funktion wird auf jeden Wert der Collection angewendet und das Ergebnis wird in einer neuen Collection zurückgegeben.
$users = User::all();
$emails = $users->map(function ($user) {
return $user->email;
});
In diesem Beispiel wird die map()-Methode verwendet, um alle E-Mail-Adressen der Benutzer in eine neue Collection zu speichern. Es wird eine Callback-Funktion übergeben, die jeden Benutzer durchläuft und dessen E-Mail-Adresse extrahiert. Das Ergebnis ist eine neue Collection, die nur die E-Mail-Adressen enthält.
Es ist wichtig zu beachten, dass die map()-Methode die ursprüngliche Collection nicht verändert, sondern eine neue Collection zurückgibt. Es ist auch möglich, die ursprüngliche Collection zu überschreiben, in dem man es zuweist:
$users->map(function ($user) {
return $user->email;
})->all();
Die map()-Methode ist eine sehr nützliche Methode, um Daten in einer Collection zu transformieren und zu manipulieren, es erleichtert das Arbeiten mit Daten in Laravel.
Was macht die Filter Methode bei einer collection in Laravel?
Die Methode filter() in Laravel’s Collection ermöglicht es Entwicklern, eine Collection durch eine angegebene Callback-Funktion zu filtern. Diese Funktion wird auf jeden Wert der Collection angewendet und die Werte, die die Bedingungen der Funktion erfüllen, werden in einer neuen Collection zurückgegeben.
Beispiel:
$users = User::all();
$activeUsers = $users->filter(function ($user) {
return $user->is_active;
});
In diesem Beispiel wird die filter()-Methode verwendet, um alle aktiven Benutzer in eine neue Collection zu speichern. Es wird eine Callback-Funktion übergeben, die jeden Benutzer durchläuft und überprüft, ob der Benutzer aktiv ist. Das Ergebnis ist eine neue Collection, die nur die aktiven Benutzer enthält.
Es ist wichtig zu beachten, dass die filter()-Methode die ursprüngliche Collection nicht verändert, sondern eine neue Collection zurückgibt. Es ist auch möglich, die ursprüngliche Collection zu überschreiben, in dem man es zuweist:
$users->filter(function ($user) {
return $user->is_active;
})->all();
Die filter()-Methode ist eine sehr nützliche Methode, um eine Collection zu filtern und zu selektieren, es erleichtert das Arbeiten mit Daten in Laravel. Sie kann verwendet werden, um bestimmte Datensätze aus einer Collection zu extrahieren, basierend auf bestimmten Bedingungen.
Man kann mehrere Filter auf einer Collection anwenden, um die gewünschten Ergebnisse zu erhalten. Auch kann man filter() und map() Methoden kombinieren, um die Collection zu filtern und gleichzeitig die Daten zu transformieren.
Es ist auch zu beachten, dass filter() Methode auch mit anderen Methoden kombiniert werden kann, wie zum Beispiel sort(), count(), unique(), etc. um eine komplexere Datenmanipulation durchzuführen.
Wie kann ich mehrere Filter in Laravel für eine Collection nutzen?
In Laravel können mehrere Filter für eine Collection verwendet werden, indem man die filter()-Methode mehrmals hintereinander anwendet. Jeder Aufruf der filter()-Methode wird auf die Ergebnisse des vorherigen Aufrufs angewendet und gibt eine neue Collection zurück.
Beispiel:
$users = User::all();
$filteredUsers = $users->filter(function ($user) {
return $user->is_active;
});
$filteredUsers = $filteredUsers->filter(function ($user) {
return $user->age > 25;
});
$filteredUsers = $filteredUsers->filter(function ($user) {
return $user->gender == 'male';
});
In diesem Beispiel werden die filter()-Methoden nacheinander auf die $users Collection angewendet. Jeder Filter-Aufruf gibt eine neue Collection zurück, die die Ergebnisse des vorherigen Filters enthält.
Es ist auch möglich, die filter()-Methoden in eine einzige Methode zu schreiben, um die Lesbarkeit zu erhöhen, z.B.
$users = User::all();
$filteredUsers = $users->filter(function ($user) {
return $user->is_active && $user->age > 25 && $user->gender === 'male';
});
Es ist wichtig zu beachten, dass die ursprüngliche Collection nicht verändert wird, sondern jeder Filter-Aufruf gibt eine neue Collection zurück.
Man kann auch die where() Methode verwenden um mehrere Filter auf einmal anzuwenden, z.B.
$filteredUsers = User::where('is_active', true)->where('age', '>', 25)->where('gender', 'male')->get();