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
1099 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!

source:php
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