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ück
  • average(): Berechnet den Durchschnittswert aller Elemente in der Collection
  • chunk(): Zerlegt die Collection in kleinere Gruppen
  • collapse(): Führt alle Arrays in der Collection zusammen
  • concat(): Fügt ein Array oder eine Collection zu der aktuellen Collection hinzu
  • contains(): Überprüft, ob ein bestimmter Wert in der Collection enthalten ist
  • count(): Gibt die Anzahl der Elemente in der Collection zurück
  • diff(): Gibt die Elemente zurück, die in der aktuellen Collection aber nicht in der übergebenen Collection enthalten sind
  • each(): Führt eine gegebene Callback-Funktion für jedes Element in der Collection aus
  • every(): Überprüft, ob alle Elemente in der Collection eine bestimmte Bedingung erfüllen
  • except(): Gibt alle Elemente der Collection zurück, außer denen, die in der gegebenen Liste enthalten sind
  • filter(): Filtert die Collection basierend auf einer gegebenen Bedingung
  • first(): Gibt das erste Element der Collection zurück
  • flatten(): Glättet eine mehrdimensionale Collection
  • flip(): Kehrt die Schlüssel-Wert-Beziehungen in der Collection um
  • forget(): Entfernt ein bestimmtes Element aus der Collection
  • get(): Gibt einen bestimmten Wert aus der Collection zurück
  • groupBy(): Gruppiert die Collection nach einem bestimmten Schlüssel
  • has(): Überprüft, ob ein bestimmter Schlüssel in der Collection vorhanden ist
  • implode(): Fügt die Werte der Collection zu einem String zusammen
  • intersect(): Gibt die Elemente zurück, die sowohl in der aktuellen Collection als auch in der übergebenen Collection enthalten sind
  • isEmpty(): Überprüft, ob die Collection leer ist
  • isNotEmpty(): Überprüft, ob die Collection nicht leer ist
  • keys(): Gibt die Schlüssel der Collection zurück
  • last(): Gibt das letzte Element der Collection
  • map(): Wendet eine gegebene Callback-Funktion auf alle Elemente der Collection an und gibt eine neue Collection mit den Ergebnissen zurück
  • max(): Gibt das höchste Element der Collection zurück
  • min(): Gibt das niedrigste Element der Collection zurück
  • only(): Gibt nur die angegebenen Schlüssel der Collection zurück
  • pluck(): Extrahiert einen bestimmten Wert aus jedem Element der Collection
  • pop(): Entfernt das letzte Element der Collection
  • prepend(): Fügt ein Element am Anfang der Collection hinzu
  • pull(): Entfernt ein bestimmtes Element aus der Collection und gibt den Wert zurück
  • push(): Fügt ein Element am Ende der Collection hinzu
  • put(): Setzt einen Wert in der Collection
  • random(): Gibt ein zufälliges Element der Collection zurück
  • reduce(): Reduziert die Collection auf einen einzigen Wert
  • reject(): Filtert die Collection und gibt die Elemente zurück, die eine bestimmte Bedingung nicht erfüllen
  • reverse(): Kehrt die Reihenfolge der Elemente in der Collection um
  • search(): Sucht nach einem bestimmten Wert in der Collection
  • shift(): Entfernt das erste Element der Collection
  • shuffle(): Mische die Elemente der Collection zufällig
  • slice(): Schneidet einen Teil der Collection aus
  • sort(): Sortiert die Elemente der Collection
  • sortBy(): Sortiert die Elemente der Collection nach einem bestimmten Schlüssel
  • sortByDesc(): Sortiert die Elemente der Collection in absteigender Reihenfolge nach einem bestimmten Schlüssel
  • splice(): Entfernt und ersetzt Elemente in der Collection
  • split(): Zerlegt die Collection in mehrere kleinere Collections
  • sum(): Berechnet die Summe aller Elemente in der Collection
  • take(): Gibt die ersten n Elemente der Collection zurück
  • tap(): Führt eine gegebene Callback-Funktion aus und gibt die Collection unverändert zurück
  • times(): Führt eine gegebene Callback-Funktion n-mal aus
  • toArray(): Konvertiert die Collection in ein Array
  • toJson(): Konvertiert die Collection in einen JSON-String
  • unique(): Entfernt alle doppelten Elemente aus der Collection
  • unless(): Führt eine gegebene Callback-Funktion nur dann nicht aus, wenn eine bestimmte Bedingung erfüllt ist
  • unshift(): Fügt ein Element am Anfang der Collection hinzu
  • values(): Gibt die Werte der Collection zurück
  • when(): Führt eine gegebene Callback-Funktion nur dann aus, wenn eine bestimmte Bedingung erfüllt ist
  • where(): Filtert die Collection basierend auf einer gegebenen Bedingung
  • whereIn(): Filtert die Collection basierend auf einer Liste von Werten
  • whereNotIn(): Filtert die Collection basierend auf einer Liste von Werten, die nicht enthalten sind
  • zip(): 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();

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert