Maison >base de données >tutoriel mysql >Comment définir les colonnes d'horodatage par défaut sur CURRENT_TIMESTAMP dans les migrations Laravel ?
Problème :
Dans le générateur de schéma/migrations de Laravel, les utilisateurs demandez des conseils sur la façon de créer une colonne d'horodatage avec une valeur par défaut de CURRENT_TIMESTAMP ON MISE À JOUR CURRENT_TIMESTAMP. La fonction timestamps() est actuellement définie par défaut sur 0000-00-00 00:00 pour les colonnes créées et mises à jour.
Solution :
Pour définir la valeur par défaut d'un colonne d'horodatage vers CURRENT_TIMESTAMP à l'aide des migrations Laravel, utilisez DB::raw():
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
Depuis Laravel 5.1.25, vous pouvez simplifier cela en utilisant le modificateur de colonne useCurrent() :
$table->timestamp('created_at')->useCurrent();
Pour MySQL, ON UPDATE CURRENT_TIMESTAMP peut être utilisé via DB::raw():
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
Commencer avec Laravel 8.36.0, useCurrent() et useCurrentOnUpdate() ensemble peuvent obtenir le même résultat :
$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
Gotchas :
Merci à @andrewhl pour le problème de Laravel 4.x et @ChanakaKarunarathne pour le raccourci useCurrentOnUpdate().
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!