Maison  >  Article  >  développement back-end  >  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
Barbara Streisandoriginal
2024-10-20 12:28:30958parcourir

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'));

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

$table->timestamp('created_at')->useCurrent();

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();

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)'));

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