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

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!