Maison > développement back-end > tutoriel php > Comment définir l'horodatage par défaut sur l'horodatage actuel dans les migrations Laravel ?

Comment définir l'horodatage par défaut sur l'horodatage actuel dans les migrations Laravel ?

Barbara Streisand
Libérer: 2024-10-20 11:40:02
original
678 Les gens l'ont consulté

How Do I Set the Default Timestamp to the Current Timestamp in Laravel Migrations?

Migrations Laravel : définir l'horodatage par défaut sur l'horodatage actuel

Dans Laravel, les horodatages sont couramment utilisés pour suivre l'activité, par exemple lorsqu'un enregistrement a été créé ou mis à jour. Par défaut, ces horodatages sont définis sur 0000-00-00 00:00. Cependant, il peut être utile de définir automatiquement la valeur par défaut sur l'horodatage actuel.

Utilisation de DB::raw()

Pour les horodatages que vous souhaitez mettre à jour régulièrement, vous pouvez utiliser la base de données ::raw() fonction pour spécifier CURRENT_TIMESTAMP comme valeur par défaut :

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

Cela garantit que la colonne créée_at contiendra toujours l'horodatage actuel, à la fois lors de la création initiale de l'enregistrement et lors de sa mise à jour.

Utilisation de useCurrent() ou useCurrentOnUpdate()

Alternativement, vous pouvez utiliser les méthodes useCurrent() ou useCurrentOnUpdate() pour obtenir le même résultat :

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

Le useCurrent () attribue l'horodatage actuel comme valeur par défaut pour la création et les mises à jour, tandis que useCurrentOnUpdate() définit la valeur par défaut pour les mises à jour uniquement.

Clause MySQL ON UPDATE

Pour MySQL, vous pouvez utilisez 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

Gotchas

  • MySQL: Depuis MySQL 5.7, vous devrez peut-être définir explicitement une valeur par défaut valide pour les colonnes d'horodatage, car 0000-00-00 00:00:00 n'est plus accepté.
  • PostgreSQL & Laravel 4.x : Dans Laravel 4.x, vous peut rencontrer des problèmes avec l'analyse des horodatages si vous utilisez CURRENT_TIMESTAMP avec une précision par défaut. Utilisez plutôt CURRENT_TIMESTAMP(0) pour éviter cela.

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