Maison > base de données > tutoriel mysql > Comment définir les colonnes d'horodatage par défaut sur CURRENT_TIMESTAMP dans les migrations Laravel ?

Comment définir les colonnes d'horodatage par défaut sur CURRENT_TIMESTAMP dans les migrations Laravel ?

DDD
Libérer: 2024-11-22 08:14:15
original
814 Les gens l'ont consulté

How to Set Default Timestamp Columns to CURRENT_TIMESTAMP in Laravel Migrations?

Laravel : définition des colonnes d'horodatage par défaut sur l'horodatage actuel

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'));
Copier après la connexion

Depuis Laravel 5.1.25, vous pouvez simplifier cela en utilisant le modificateur de colonne useCurrent() :

$table->timestamp('created_at')->useCurrent();
Copier après la connexion

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'));
Copier après la connexion

Commencer avec Laravel 8.36.0, useCurrent() et useCurrentOnUpdate() ensemble peuvent obtenir le même résultat :

$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
Copier après la connexion

Gotchas :

  • MySQL : Avant la version 5.7, 0000-00-00 00:00:00 était invalide. Utilisez useCurrent() ou nullable() pour résoudre ce problème.
  • PostgreSQL & Laravel 4.x : La précision par défaut des colonnes d'horodatage a causé des problèmes avec l'analyse de Carbon. Utilisez DB::raw('CURRENT_TIMESTAMP(0)') pour garantir une précision nulle.
  • PostgreSQL & Laravel 5.0 : La précision par défaut est désormais nulle, ce qui évite ce problème.

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal