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.
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