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

Comment définir les valeurs d'horodatage par défaut dans les migrations Laravel ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-22 14:59:13869parcourir

How to Set Default Timestamp Values in Laravel Migrations?

Définition des valeurs d'horodatage par défaut à l'aide des migrations Laravel

Le Laravel Schema Builder fournit un moyen pratique de créer et de modifier des tables de base de données. Cependant, les utilisateurs rencontrent parfois des problèmes lors de la définition des valeurs d'horodatage par défaut sur l'horodatage actuel lors de la création et de la mise à jour.

La méthode timestamps()

En général, la méthode timestamps() est utilisé pour gérer automatiquement les colonnes d'horodatage Created_at et Updated_at. Cependant, cette méthode définit leurs valeurs par défaut sur « 0000-00-00 00:00:00 ».

Solution : DB::raw() et useCurrent()

Pour définir une valeur par défaut de CURRENT_TIMESTAMP, utilisez DB::raw():

$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));

À partir de Laravel 5.1.25, vous pouvez également utiliser la méthode useCurrent() :

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

Clause MySQL ON UPDATE

Pour MySQL, vous pouvez spécifier la clause ON UPDATE en utilisant DB::raw():

$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));

Depuis Laravel 8.36.0, vous pouvez utiliser useCurrentOnUpdate() en conjonction avec useCurrent():

$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();

Gotchas

  • MySQL : Depuis MySQL 5.7, « 0000-00-00 00:00:00 » n'est pas valide. Utilisez useCurrent() ou rendez les horodatages nullables.
  • PostgreSQL et Laravel 4.x : Utilisez CURRENT_TIMESTAMP(0) pour garantir une précision nulle et éviter les problèmes d'analyse de Carbon.

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