Nouvelles Du Monde

Model Casts passe aux méthodes dans Laravel 11

Model Casts passe aux méthodes dans Laravel 11

Les conversions de modèles dans Laravel 10 sont définies via la propriété de tableau $casts. Cependant, dans Laravel 11, vous pouvez définir une méthode casts(), qui ouvre la possibilité d’utiliser des méthodes statiques sur les roulettes intégrées ainsi que de définir des méthodes statiques pour les roulettes personnalisées :

utilisez AppEnumsUserOption ;

utilisez IlluminateDatabaseEloquentCastsAsEnumCollection ;

//…

/**

* Obtenez les attributs qui doivent être diffusés.

*

* Tableau @return

*/

fonction protégée casts() : tableau

{

retour [

        ’email_verified_at’ => ‘datetime’,

        ‘password’ => ‘hashed’,

        ‘options’ => AsEnumCollection::of(UserOption::class),

    ];

}

Dans Laravel 10, la même distribution ressemblerait à ce qui suit puisque vous ne pouvez pas appeler de méthodes statiques lors de la définition d’une propriété de tableau :

protégé $casts = [

    ‘options’ => AsEnumCollection::class.’:’.UserOption::class,

];

Cette mise à jour est rétrocompatible avec Laravel 10 et vous pouvez toujours définir des transtypages via la propriété $casts combinée avec la nouvelle méthode casts(). La propriété $casts et la méthode casts() sont fusionnées, les clés de méthode ayant priorité sur la propriété $casts.

Lire aussi  Un ancien employé d'Uber crée 388 faux profils de chauffeurs et trompe l'entreprise de Rs 1,17 crore

Je recommanderais de déplacer les conversions vers la version de méthode si vous souhaitez profiter des méthodes statiques pour les roulettes intégrées.

Exemple du lanceur AsEnumCollection

Parallèlement à la mise à jour permettant de définir les transtypages via la méthode casts(), de nouvelles méthodes statiques ont été ajoutées aux roulettes intégrées pour faciliter la définition des transtypages :

AsCollection::using(OptionCollection::class);

AsEncryptedCollection::using(OptionCollection::class);

AsEnumArrayObject::using(OptionEnum::class);

AsEnumCollection::using(OptionEnum::class);

Criez à Nuno Maduroqui a implémenté cette fonctionnalité dans Demande d’extraction # 47237!

2024-02-01 17:03:45
1706812308


#Model #Casts #passe #aux #méthodes #dans #Laravel

Facebook
Twitter
LinkedIn
Pinterest

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

ADVERTISEMENT