Comment définir la valeur par défaut des colonnes d'horodatage sur CURRENT_TIMESTAMP et la mise à jour automatique dans les migrations Laravel ?

Barbara Streisand
Libérer: 2024-10-20 12:26:02
original
379 Les gens l'ont consulté

How Do I Set the Default Value of Timestamp Columns to CURRENT_TIMESTAMP and Auto Update in Laravel Migrations?

Définition de la valeur par défaut de la colonne d'horodatage sur l'horodatage actuel dans les migrations Laravel

Question : Comment puis-je créer un horodatage colonne avec une valeur par défaut de CURRENT_TIMESTAMP et la mettre à jour vers CURRENT_TIMESTAMP dans les migrations Laravel ?

Le générateur de schéma de Laravel ne fournit pas explicitement de méthode pour définir la valeur par défaut d'une colonne d'horodatage sur CURRENT_TIMESTAMP.

Réponse :

Pour définir la valeur par défaut sur CURRENT_TIMESTAMP, utilisez la méthode DB::raw() pour définir une expression brute :

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

Pour MySQL, vous pouvez utilisez en outre la clause ON UPDATE dans DB::raw():

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

Depuis Laravel 5.1.25, vous pouvez utiliser la méthode useCurrent() pour simplifier cela :

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

Dans Laravel 8.36.0 et supérieur, useCurrent() peut être utilisé avec la méthode useCurrentOnUpdate() pour les valeurs par défaut et lors de la mise à jour :

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

Gotchas :

  • MySQL : À partir de la version 5.7, 0000-00-00 00:00:00 n'est plus valide comme horodatage. Utilisez useCurrent() ou autorisez les valeurs nulles.
  • PostgreSQL dans Laravel 4.x : Spécifiez une précision nulle à la fonction CURRENT_TIMESTAMP pour éviter les erreurs de microsecondes.
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));
Copier après la connexion

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!