Maison > développement back-end > tutoriel php > Comment remplir les colonnes d'horodatage avec l'horodatage actuel à l'aide des migrations Laravel ?

Comment remplir les colonnes d'horodatage avec l'horodatage actuel à l'aide des migrations Laravel ?

Barbara Streisand
Libérer: 2024-10-20 12:28:30
original
1156 Les gens l'ont consulté

How Do I Populate Timestamp Columns with Current Timestamp Using Laravel Migrations?

Comment remplir les colonnes d'horodatage avec l'horodatage actuel à l'aide des migrations Laravel

Énoncé du problème

Valeurs par défaut pour les colonnes d'horodatage dans Laravel les migrations utilisant Schema Builder sont définies sur « 0000-00-00 00:00:00 » ; comment pouvons-nous modifier cela en 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP' ?

Solution

Utiliser DB::raw() pour incorporer CURRENT_TIMESTAMP comme valeur par défaut d'une colonne :

$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
Copier après la connexion

Alternativement, après Laravel 5.1.25, vous pouvez utiliser la méthode useCurrent() directement sur la colonne timestamp :

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

Pour MySQL, incluez la clause ON UPDATE en utilisant DB : raw() ou, à partir de Laravel 8.36.0, la méthode useCurrentOnUpdate() :

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

Attentions

  • MySQL (à partir de la version 5.7 ): '0000-00-00 00:00:00' n'est plus valide. Par conséquent, fournissez une valeur par défaut valide (par exemple, useCurrent() ou nullable()) pour les colonnes d'horodatage.
  • PostgreSQL (Laravel 4.x) : Assurez-vous de spécifier une précision nulle pour CURRENT_TIMESTAMP afin d'éviter Erreurs d'analyse d'horodatage dues à des fractions de seconde :
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));
Copier après la connexion

Merci à @andrewhl pour avoir identifié le problème PostgreSQL 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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal