Maison >développement back-end >tutoriel php >Comment définir les horodatages Laravel sur CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ?

Comment définir les horodatages Laravel sur CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ?

DDD
DDDoriginal
2024-10-20 12:17:02354parcourir

How to Set Laravel Timestamps to CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP?

Horodatage par défaut avec les migrations Laravel

Le générateur de schéma de Laravel simplifie la manipulation du schéma de base de données, mais définir la valeur par défaut d'une colonne d'horodatage sur l'horodatage actuel peut être un défi.

Problème :

Dans Laravel, timestamps() génère des colonnes d'horodatage avec une valeur par défaut de 0000-00-00 00:00. Comment pouvons-nous définir cette valeur par défaut sur CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP à l'aide des migrations Laravel ?

Solution :

Pour spécifier CURRENT_TIMESTAMP comme valeur par défaut pour une colonne d'horodatage, utilisez DB : :raw():

<code class="php">$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));</code>

À partir de Laravel 5.1.25, utilisez le modificateur de colonne useCurrent() :

<code class="php">$table->timestamp('created_at')->useCurrent();</code>

Pour les clauses ON UPDATE, nous pouvons utiliser DB::raw ():

<code class="php">$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));</code>

Depuis Laravel 8.36.0, utilisez le modificateur useCurrentOnUpdate() :

<code class="php">$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();</code>

Gotchas :

  • MySQL : Depuis la version 5.7, 0000-00-00 00:00:00 n'est plus une date valide. Définissez une valeur par défaut valide ou utilisez des horodatages nullable().
  • PostgreSQL et Laravel 4.x : Spécifiez une précision nulle pour CURRENT_TIMESTAMP pour éviter les problèmes d'analyse en microsecondes.
<code class="php">$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));</code>

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