Aan de slag
Bij het bouwen van een API met Laravel moet je modellen en hun relaties vaak omzetten naar arrays of JSON. Eloquent bevat handige methoden voor deze conversies, plus functionaliteit om te bepalen welke attributen in de geserialiseerde weergave van je modellen worden opgenomen.Zie de documentatie over Eloquent API-resources voor een robuustere manier om Eloquent-modellen en -collecties naar JSON te serialiseren.
Modellen en arrays
Serialiseren naar een array
Gebruik detoArray-methode om een model en de geladen relaties om te zetten naar een array.
Deze methode werkt recursief: alle attributen en alle relaties (inclusief relaties van relaties) worden naar arrays omgezet.
attributesToArray-methode kun je alleen de attributen van het model, zonder de relaties, omzetten naar een array.
toArray-methode aan op de collectie-instantie.
Serialiseren naar JSON
Gebruik detoJson-methode om een model naar JSON om te zetten.
Net als toArray werkt toJson recursief, dus alle attributen en relaties worden naar JSON omgezet.
Je kunt ook de JSON-encodeeropties die PHP ondersteunt opgeven.
toJson-methode van het model of de collectie automatisch aangeroepen.
Relaties
Wanneer een Eloquent-model naar JSON wordt omgezet, worden de geladen relaties automatisch opgenomen als attributen van het JSON-object. Verder worden Eloquent-relatiemethoden gedefinieerd met “camelCase”-methodenamen, maar het JSON-attribuut van een relatie is in “snake_case”.Zichtbaarheid van attributen beheren
Attributen verbergen
Soms wil je attributen zoals wachtwoorden uitsluiten van de array- of JSON-weergave van je model. Gebruik daarvoor hetHidden-attribuut op je model.
Attributen die in het Hidden-attribuut staan, worden niet opgenomen in de geserialiseerde weergave van het model.
Om een relatie te verbergen, voeg je de methodenaam van de relatie toe aan het Hidden-attribuut van het Eloquent-model.
Attributen zichtbaar maken
Met hetVisible-attribuut kun je ook een “toelatingslijst” definiëren van attributen die in de array- en JSON-weergave van je model moeten worden opgenomen.
Alle attributen die niet in het Visible-attribuut staan, worden verborgen wanneer het model naar een array of JSON wordt omgezet.
Attributen tijdelijk tonen of verbergen
Om attributen die normaal verborgen zijn zichtbaar te maken op een specifieke modelinstantie, gebruik je de methodenmakeVisible of mergeVisible.
De makeVisible-methode geeft de modelinstantie terug.
makeHidden of mergeHidden.
setVisible en setHidden.
Extra attributen
Bij het omzetten van een model naar een array of JSON wil je soms attributen toevoegen waarvoor geen kolom in de database bestaat. Definieer daarvoor eerst een accessor voor de waarde.Appends-attribuut op je model.
De PHP-methode van de accessor is gedefinieerd in “camelCase”, maar voor de attribuutnaam gebruik je gewoonlijk de geserialiseerde weergave in “snake_case”.
appends-lijst is toegevoegd, wordt het opgenomen in zowel de array- als de JSON-weergave van het model.
Attributen in de appends-array respecteren ook de visible- en hidden-instellingen van het model.
Toevoegen tijdens runtime
Tijdens runtime kun je met de methodenappend of mergeAppends een modelinstantie opdragen extra attributen toe te voegen.
Ook kun je met de setAppends-methode de volledige array van extra properties van een specifieke modelinstantie overschrijven.
withoutAppends-methode.
Serialisatie van datums
Het standaarddatumformaat aanpassen
Door deserializeDate-methode te overriden, kun je het standaardserialisatieformaat aanpassen.
Deze methode heeft geen invloed op het datumformaat voor opslag in de database.