ホームページ > バックエンド開発 > PHPチュートリアル > LaravelのタイムスタンプをUPDATE CURRENT_TIMESTAMPにCURRENT_TIMESTAMPに設定する方法は?

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

DDD
リリース: 2024-10-20 12:17:02
オリジナル
378 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート