Skip to main content

Was sind Casts?

Eloquent-Casts wandeln aus der Datenbank gelesene Rohwerte in PHP-Typen um und beim Speichern in die umgekehrte Richtung. Sie werden über die Methode casts definiert.

Arten der integrierten Casts

Liste der von Laravel mitgelieferten Casts.
AsArrayObject und AsCollection sind Laravel-intern als eigene Casts implementiert, damit einzelne Offsets eines Arrays direkt geändert werden können.

Eine eigene Cast-Klasse erstellen

Wenn die eingebauten Casts nicht ausreichen, erstellen Sie eine eigene Cast-Klasse, die das Interface CastsAttributes implementiert.

Definition des Interfaces

Der Framework-Contract sieht folgendermaßen aus:
Weil das Argument $attributes alle Modellattribute enthält, sind auch spaltenübergreifende Umwandlungen möglich (siehe Value-Object-Muster unten).

Grundlegende Implementierung eines eigenen Casts

Erzeugen Sie ein Gerüst mit make:cast.
Die Datei app/Casts/AsMoney.php wird angelegt. Als Beispiel implementieren wir einen Cast, der einen als Integer gespeicherten Geldbetrag in ein Money-Value-Object umwandelt.
Aktivieren Sie den Cast am Modell:
$order->price liefert nun eine Money-Instanz.

Value-Object-Casts

Ein Muster, um mehrere DB-Spalten als ein einziges Value Object zu behandeln.

Beispiel: Adress-Cast

Die zwei Spalten address_line_one und address_line_two werden in ein Address-Value-Object zusammengefasst.
Gibt set ein Array zurück, verwendet Eloquent die Schlüssel als Spaltennamen und speichert die Werte in die jeweiligen Spalten. Bei Ein-Spalten-Casts geben Sie einen String oder Integer zurück.
Die Anwendung am Modell und die Nutzung:

Value-Object-Cache

In Value Objects umgewandelte Attributwerte werden von Eloquent gecacht. Beim zweifachen Zugriff auf dasselbe Attribut erhalten Sie dieselbe Instanz. Wenn Sie den Cache deaktivieren möchten, fügen Sie in der Cast-Klasse die Property $withoutObjectCaching hinzu.

Inbound-Casts (nur Schreiben)

Ein Cast, der nur beim Schreiben in die DB umwandelt, beim Lesen aber nicht. Implementiert das Interface CastsInboundAttributes. Typischer Anwendungsfall ist Hashing: Beim Speichern von Passwörtern oder geheimen Werten wird gehasht, beim Lesen wird der Hash unverändert zurückgegeben.

Cast-Parameter

Parameter an einen Cast übergeben Sie nach dem Klassennamen mit Doppelpunkt getrennt. Mehrere Parameter trennen Sie durch Komma.
Die Parameter werden dem Konstruktor der Cast-Klasse übergeben.

Castables: Cast-Logik im Value Object

Ein Value Object, das das Interface Castable implementiert, besitzt eine Methode castUsing, die die zu verwendende Cast-Klasse zurückgibt. So muss das Modell die Cast-Klasse nicht kennen und die Domänenlogik bleibt aufgeräumt.
Am Modell geben Sie statt der Cast-Klasse die Value-Object-Klasse an.
In Kombination mit Castable und einer anonymen Klasse können Sie Value Object und Cast-Logik in einer Datei bündeln.

Zusammenspiel mit $appends und $hidden

Casts, $appends und $hidden sind eigenständige Mechanismen. Bei der Kombination ist Sorgfalt geboten.
In $hidden geben Sie DB-Spaltennamen an. Nicht den durch den Cast entstandenen Attributnamen (address), sondern die Ursprungsnamen (address_line_one, address_line_two).

Casts zur Laufzeit ergänzen

Wenn Sie nur für eine bestimmte Query oder Anfrage Casts ergänzen wollen, nutzen Sie mergeCasts.

Nächste Schritte

Eloquent-Observer und Modell-Events

Lernen Sie, wie Sie sich in Lebenszyklus-Events wie Speichern oder Löschen einklinken und eigene Verarbeitung ergänzen.
Zuletzt geändert am 13. Juli 2026