ホームページ > データベース > mysql チュートリアル > Laravel の移行でデフォルトのタイムスタンプ値を設定するにはどうすればよいですか?

Laravel の移行でデフォルトのタイムスタンプ値を設定するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-22 14:59:13
オリジナル
867 人が閲覧しました

How to Set Default Timestamp Values in Laravel Migrations?

Laravel 移行を使用したデフォルトのタイムスタンプ値の設定

Laravel スキーマ ビルダーは、データベース テーブルを作成および変更するための便利な方法を提供します。ただし、ユーザーは、作成時および更新時にデフォルトのタイムスタンプ値を現在のタイムスタンプに設定する際に問題が発生することがあります。

timestamps() メソッド

通常、timestamps() メソッドcreated_at および updated_at タイムスタンプ列を自動的に管理するために使用されます。ただし、このメソッドはデフォルト値を '0000-00-00 00:00:00' に設定します。

解決策: DB::raw() および useCurrent()

CURRENT_TIMESTAMP のデフォルト値を設定するには、次を使用しますDB::raw():

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

Laravel 5.1.25 以降では、useCurrent() メソッドも使用できます:

$table->timestamp('created_at')->useCurrent();
ログイン後にコピー

MySQL ON UPDATE Clause

MySQL の場合、次を使用して ON UPDATE 句を指定できます。 DB::raw():

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

Laravel 8.36.0 以降、useCurrentOnUpdate() を併用できます。 useCurrent():

$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
ログイン後にコピー

注意事項

  • MySQL: MySQL 5.7 以降、'0000-00-00 00:00 :00' は無効です。 useCurrent() を使用するか、タイムスタンプを null 可能にします。
  • PostgreSQL および Laravel 4.x: CURRENT_TIMESTAMP(0) を使用してゼロ精度を確保し、Carbon 解析の問題を回避します。

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

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