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
Libérer: 2024-10-20 12:17:02
original
356 Les gens l'ont consulté

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>
Copier après la connexion

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

<code class="php">$table->timestamp('created_at')->useCurrent();</code>
Copier après la connexion

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>
Copier après la connexion

Depuis Laravel 8.36.0, utilisez le modificateur useCurrentOnUpdate() :

<code class="php">$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();</code>
Copier après la connexion

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>
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal