Einführung
Beim Aufbau einer API mit Laravel müssen Sie Modelle und ihre Relationen häufig in Arrays oder JSON umwandeln. Eloquent bringt praktische Methoden für diese Umwandlung mit sowie Funktionen, mit denen Sie steuern, welche Attribute in der serialisierten Darstellung enthalten sind.Eine robustere Möglichkeit, Eloquent-Modelle und -Collections nach JSON zu serialisieren, bietet die Dokumentation zu Eloquent-API-Ressourcen.
Modelle und Arrays
Serialisierung in ein Array
Um ein Modell und seine geladenen Relationen in ein Array umzuwandeln, verwenden Sie die MethodetoArray.
Die Methode arbeitet rekursiv: Alle Attribute und alle Relationen (inklusive verschachtelter Relationen) werden in ein Array überführt.
attributesToArray konvertieren Sie ausschließlich die Attribute des Modells, ohne Relationen.
toArray der Collection-Instanz in ein Array um.
Serialisierung in JSON
Mit der MethodetoJson wandeln Sie ein Modell in JSON um.
Wie toArray arbeitet toJson rekursiv – alle Attribute und Relationen werden in JSON überführt.
Sie können die von PHP unterstützten JSON-Kodierungsoptionen übergeben.
toJson aufgerufen.
Relationen
Wenn ein Eloquent-Modell in JSON umgewandelt wird, tauchen bereits geladene Relationen automatisch als Attribute im JSON-Objekt auf. Auch wenn Eloquent-Relationsmethoden im CamelCase definiert sind, verwenden ihre JSON-Attributnamen die Snake-Case-Schreibweise.Sichtbarkeit von Attributen steuern
Attribute ausblenden
Manchmal möchten Sie in der Array- oder JSON-Darstellung eines Modells bestimmte Attribute – etwa Passwörter – ausblenden. Verwenden Sie hierfür das AttributHidden auf dem Modell.
Attribute, die in Hidden aufgelistet sind, erscheinen nicht in der serialisierten Darstellung.
Um Relationen auszublenden, tragen Sie den Namen der Relationsmethode in das
Hidden-Attribut ein.Attribute freigeben
Mit dem AttributVisible legen Sie eine „Whitelist” der Attribute fest, die in Array- und JSON-Darstellungen enthalten sein sollen.
Alle Attribute, die nicht in Visible aufgelistet sind, werden bei der Umwandlung in ein Array oder JSON ausgeblendet.
Attribute temporär ein-/ausblenden
Um normalerweise verborgene Attribute auf einer bestimmten Modellinstanz sichtbar zu machen, verwenden SiemakeVisible oder mergeVisible.
makeVisible liefert die Modellinstanz zurück.
makeHidden oder mergeHidden verbergen.
setVisible bzw. setHidden.
Angehängte Attribute (Appends)
Bei der Umwandlung eines Modells in ein Array oder JSON möchten Sie manchmal Attribute hinzufügen, für die es keine passende Datenbankspalte gibt. Definieren Sie dazu zunächst einen Accessor für den gewünschten Wert.Appends.
Die PHP-Methode für den Accessor ist im CamelCase definiert; der Attributname folgt in der Serialisierung üblicherweise dem Snake-Case.
appends-Liste steht, taucht es sowohl in der Array- als auch in der JSON-Darstellung auf.
Auch Einträge in appends unterliegen den visible- und hidden-Einstellungen des Modells.
Zur Laufzeit anhängen
Zur Laufzeit können Sie einer Modellinstanz mitappend oder mergeAppends zusätzliche Attribute anhängen.
Mit setAppends überschreiben Sie das gesamte Array angehängter Eigenschaften für eine bestimmte Modellinstanz.
withoutAppends.
Datumsserialisierung
Standard-Datumsformat anpassen
Durch Überschreiben der MethodeserializeDate passen Sie das Standard-Serialisierungsformat an.
Auf das Speicherformat in der Datenbank hat diese Methode keinen Einfluss.