Laravel の移行でデフォルトのタイムスタンプを設定し、タイムスタンプを自動更新する方法は?

Susan Sarandon
リリース: 2024-11-24 20:38:13
オリジナル
904 人が閲覧しました

How to Set Default Timestamps and Auto-Update Timestamps in Laravel Migrations?

Laravel Migrations のタイムスタンプ列のデフォルトとして現在のタイムスタンプを設定する

Q: Laravel Migrations でタイムスタンプ列を設定するにはどうすればよいですか?デフォルトで現在のタイムスタンプを設定し、値に応じてタイムスタンプ自体を更新するオプションを指定します。

A: Laravel のスキーマ ビルダーは、これを実現する簡単なメソッドを提供します:

$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
ログイン後にコピー

DB::raw は未加工の式を作成するために使用され、CURRENT_TIMESTAMP を次のように設定できるようになります。デフォルト。このソリューションは、さまざまなデータベース ドライバー間で効果的に機能します。

Laravel の機能強化:

  • useCurrent() (Laravel 5.1.25 から利用可能) ): デフォルト値の設定を現在のタイムスタンプに簡略化し、置き換えます。 DB::raw('CURRENT_TIMESTAMP').
$table->timestamp('created_at')->useCurrent();
ログイン後にコピー
  • useCurrentOnUpdate() (Laravel 8.36.0 から利用可能): 追加値の変更時にタイムスタンプを更新する機能useCurrent().
$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
ログイン後にコピー

注意:

MySQL (5.7 以降):

可能性を避けるために、タイムスタンプ列に有効なデフォルト値を割り当ててください。無効な日付の問題 (例: 0000-00-00 00:00:00)。 useCurrent() を使用するか、列を null 可能にします。

Laravel 4.x での PostgreSQL:

  • タイムスタンプ列のデフォルトの精度予期しない動作を引き起こす可能性があります。
  • 使用CURRENT_TIMESTAMP(0) または Laravel 5.0 に更新してデフォルトの精度 0 を使用し、これらの問題を回避してください。

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

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