Nouveau dans Laravel 13.33. Quand la base remplit une colonne elle-même (une valeur par défaut, une colonne générée, un déclencheur), le modèle ne la connaît pas après save() : il faut le relire avec refresh(), qui recharge toutes les colonnes. L'attribut #[Refreshes] désigne les colonnes à relire après chaque écriture.
Avant
$commande = Commande::create($donnees); $commande->refresh(); // sinon $commande->total vaut null
Depuis Laravel 13.33
#[Refreshes(['statut', 'total'])] class Commande extends Model { }
Après une insertion, une mise à jour ou un increment(), Eloquent relit ces colonnes, et seulement elles, par une seule requête. On peut aussi les déclarer dans la propriété protected array $refreshes.
À faire
La table commandes calcule total (quantite × prix_unitaire, colonne générée) et donne à statut la valeur en_attente par défaut. L'API renvoie la commande juste après l'avoir créée ou modifiée, mais ces champs y sont faux : null pour les deux à la création, l'ancien total après une modification. Corrigez le modèle Commande avec #[Refreshes], sans toucher au contrôleur.