X

Laravel 5.0 – Casting d’attributs éloquents


J’avais complètement oublié de terminer mes articles de blog Laravel 5.0, mais j’ai vu une excellente introduction rapide à la diffusion d’attributs à Laravel 5 Eloquent Attribute Casting is Awesome, alors j’ai pensé que je l’ajouterais à ma liste de fonctionnalités. Consultez la documentation officielle d’Eloquent ici.

Qu’est-ce que le casting d’attributs ?

Caster une valeur signifie la changer en (ou s’assurer qu’elle est déjà) une valeur particulière taper. Certains types que vous connaissez peut-être sont integer ou boolean.

La diffusion d’attributs est une fonctionnalité des modèles Eloquent qui vous permet de configurer automatiquement votre modèle jeter un attribut particulier sur votre modèle Eloquent à un certain taper.

Remarque : Vous pouviez le faire dans le passé, mais vous deviez définir automatiquement un mutateur pour chaque attribut ; vous pouvez maintenant le faire automatiquement avec un seul tableau de configuration.

Cela signifie que si vous stockez vos données dans un format particulier dans la base de données et que vous souhaitez qu’elles soient renvoyées dans un format différent, vous pouvez désormais les convertir au nouveau format.

Mais pourquoi?

Les utilisations les plus courantes pour cela seront lorsque vous stockez des nombres – ils sont renvoyés sous forme de chaînes par défaut, mais la diffusion d’attributs éloquents vous permet de les convertir en integer, real, floatou double—ou booléens—vous pouvez convertir 0 et 1 dans votre base de données pour true et false.

Mais ce n’est pas tout.

Comment ça marche?

Vous lancez des attributs dans Eloquent en ajoutant un protected $casts tableau à votre modèle.

/**
 * The attributes that should be casted to native types.
 *
 * @var array
 */
protected $casts = [
    'is_admin' => 'boolean',
];

Comme vous pouvez le voir, chaque entrée du tableau a la propriété slug comme clé et le type de transtypage comme valeur. Ce $casts array dit à Eloquent : “Chaque fois que j’accède à une propriété sur ce modèle nommé is_adminveuillez le renvoyer au type boolean.

Les types de fonte

integer (ou int)

Cela convertit votre champ en un entier en utilisant return (int) $value.

float (ou real ou double)

Real, Float et Double sont la même chose en PHP. PHP (double) et (real) le casting de type ne sont que des alias pour (float); et si vous consultez la source, Eloquent fonctionne littéralement return (float) $value pour ces trois clés.

string

Cela convertit votre champ en une chaîne en utilisant return (string) $value.

boolean (ou bool)

Cela convertit votre champ en booléen en utilisant return (bool) $valuece qui signifie que vous stockerez probablement vos valeurs en tant que 0 et 1.

object

Object et Array sont les options les plus intéressantes. Les deux convertissent (désérialisent) les tableaux sérialisés JSON en PHP. Utilisations de l’objet return json_decode($value)renvoyant un objet stdClass.

array

Array désérialise les tableaux sérialisés JSON en tableaux PHP, en utilisant return json_decode($value, true)renvoyant un tableau.

Vous pouvez voir le code réel pour ceux-ci dans la source.

Conclure

Comme vous pouvez le voir, le casting d’attributs Eloquent a un potentiel énorme pour nous libérer d’une logique répétitive inutile, et facilite également sournoisement le stockage de données en JSON dans notre base de données. Bon produit!