Maison > base de données > tutoriel mysql > Comment définir des horodatages par défaut et des horodatages de mise à jour automatique dans les migrations Laravel ?

Comment définir des horodatages par défaut et des horodatages de mise à jour automatique dans les migrations Laravel ?

Susan Sarandon
Libérer: 2024-11-24 20:38:13
original
943 Les gens l'ont consulté

How to Set Default Timestamps and Auto-Update Timestamps in Laravel Migrations?

Définition des horodatages actuels par défaut pour les colonnes d'horodatage dans les migrations Laravel

Q : Comment puis-je configurer une colonne d'horodatage dans les migrations Laravel par défaut, l'horodatage actuel avec la possibilité de se mettre à jour en fonction de la valeur changer ?

A : Le générateur de schéma de Laravel fournit une méthode simple pour y parvenir :

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

DB::raw est utilisé pour créer une expression brute, nous permettant de définir CURRENT_TIMESTAMP par défaut. Cette solution fonctionne efficacement sur différents pilotes de base de données.

Améliorations dans Laravel :

  • useCurrent() (disponible à partir de Laravel 5.1.25 ) : Simplifie le réglage de la valeur par défaut sur l'horodatage actuel, en remplaçant DB::raw('CURRENT_TIMESTAMP').
$table->timestamp('created_at')->useCurrent();
Copier après la connexion
  • useCurrentOnUpdate() (disponible à partir de Laravel 8.36.0) : ajoute la possibilité de mettre à jour l'horodatage en cas de changement de valeur parallèlement useCurrent().
$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
Copier après la connexion

Précautions :

MySQL (5.7 et supérieur) :

Assurez-vous d'attribuer une valeur par défaut valide aux colonnes d'horodatage pour éviter les problèmes potentiels avec des dates invalides (par exemple, 0000-00-00 00:00:00). Utilisez useCurrent() ou rendez les colonnes nullables.

PostgreSQL avec Laravel 4.x :

  • La précision par défaut des colonnes d'horodatage peut conduire à un comportement inattendu.
  • Utiliser CURRENT_TIMESTAMP(0) ou mettez à jour vers Laravel 5.0 pour utiliser une précision par défaut de zéro et éviter ces problèmes.

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.cn
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