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

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

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 までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!