Introduction
Les accesseurs, mutateurs et casts d’attribut transforment les valeurs d’un modèle Eloquent lors de la lecture et de la définition sur l’instance.- Accesseur — transforme la valeur brute de la base avant de la passer à l’application
- Mutateur — transforme la valeur fournie par l’application avant de l’enregistrer
- Cast — permet de déclarer une conversion de type sans écrire de méthode
Définir un accesseur
Ajoutez une méthodeprotected sur le modèle. Nom en camelCase, retour de type Illuminate\Database\Eloquent\Casts\Attribute.
get reçoit la valeur brute. Accédez au champ via first_name.
Pour inclure la valeur calculée dans le JSON / le tableau, ajoutez-la à
$appends (en snake_case).Objet valeur à partir de plusieurs attributs
get peut recevoir $attributes (tous les attributs du modèle) en 2ᵉ argument, pour combiner des colonnes en un objet valeur.
Mise en cache des accesseurs
Les accesseurs retournant un objet valeur mémorisent automatiquement l’instance. Pour mettre en cache les types primitifs, appelezshouldCache().
withoutObjectCaching().
Définir un mutateur
Le mutateur se définit via l’argumentset de Attribute::make(). Il peut cohabiter avec l’accesseur.
set est appelée.
Écrire dans plusieurs attributs
Siset retourne un tableau, plusieurs colonnes sont mises à jour.
Casts d’attribut
Les casts offrent une déclaration concise des conversions de type sans écrire d’accesseur/mutateur. La méthodecasts() retourne un tableau.
Casts intégrés
Cast Stringable
AsStringable traite l’attribut comme un Illuminate\Support\Stringable.
Casts tableau et JSON
Les colonnes JSON/TEXT peuvent être manipulées comme des tableaux PHP.-> met à jour une clé JSON précise.
Casts AsArrayObject / AsCollection
Le cast standardarray ne permet pas de modifier directement un offset. AsArrayObject ou AsCollection contournent ce problème.
using().
Casts de date/heure
created_at / updated_at sont castés en Carbon par défaut. Faites de même pour vos colonnes.
serializeDate() (n’affecte pas la persistance en base).
Casts Enum
Les Backed Enums de PHP 8.1+ peuvent servir de cast.string ou int) ; la lecture retourne l’instance Enum.
Tableau d’Enums
Pour stocker plusieurs valeurs Enum dans une seule colonne, utilisezAsEnumCollection.
Casts au niveau requête
Appliquez un cast dynamiquement à l’exécution de la requête avecwithCasts().
Casts personnalisés
Vous pouvez créer vos propres casts en implémentantCastsAttributes et en définissant get / set.
Casts personnalisés avancés
Implémentation de
CastsAttributes, Value Object, Castables, etc.Pages associées
Eloquent API Resources
Convertir des modèles en réponses JSON cohérentes.