ホームページ  >  記事  >  バックエンド開発  >  LaravelのタイムスタンプをUPDATE CURRENT_TIMESTAMPにCURRENT_TIMESTAMPに設定する方法は?

LaravelのタイムスタンプをUPDATE CURRENT_TIMESTAMPにCURRENT_TIMESTAMPに設定する方法は?

DDD
DDDオリジナル
2024-10-20 12:17:02249ブラウズ

How to Set Laravel Timestamps to CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP?

Laravel 移行によるデフォルトのタイムスタンプ

Laravel のスキーマ ビルダーはデータベース スキーマの操作を簡素化しますが、タイムスタンプ列のデフォルト値を現在のタイムスタンプに設定するのは困難な場合があります。

問題:

Laravel では、timestamps() はデフォルト値 0000-00-00 00:00 のタイムスタンプ列を生成します。 Laravel の移行を使用して、このデフォルトを CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP に設定するにはどうすればよいですか?

解決策:

タイムスタンプ列のデフォルト値として CURRENT_TIMESTAMP を指定するには、DB を使用します。 :raw():

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

Laravel 5.1.25 以降では、useCurrent() 列修飾子を使用します:

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

ON UPDATE 句の場合、DB::raw を使用できます():

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

Laravel 8.36.0 以降、useCurrentOnUpdate() 修飾子を使用します:

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

注意点:

  • MySQL: バージョン 5.7 以降、0000-00-00 00:00:00 は有効な日付ではなくなりました。有効なデフォルトを設定するか、nullable() タイムスタンプを使用します。
  • PostgreSQL および Laravel 4.x: マイクロ秒の解析問題を回避するには、CURRENT_TIMESTAMP にゼロ精度を指定します。
<code class="php">$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));</code>

以上がLaravelのタイムスタンプをUPDATE CURRENT_TIMESTAMPにCURRENT_TIMESTAMPに設定する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。