Laravel 移行でタイムスタンプ列のデフォルト値を現在のタイムスタンプに設定する
質問: タイムスタンプを作成するにはどうすればよいですか? Laravel の移行で、デフォルト値 CURRENT_TIMESTAMP を持つ列を CURRENT_TIMESTAMP に更新しますか?
Laravel のスキーマ ビルダーには、タイムスタンプ列のデフォルト値を CURRENT_TIMESTAMP に設定するメソッドが明示的に提供されていません。
回答:
デフォルト値を CURRENT_TIMESTAMP に設定するには、DB::raw() メソッドを使用して生の式を定義します。
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
MySQL の場合、次のことができます。さらに DB::raw():
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
内で ON UPDATE 句を使用します。Laravel 5.1.25 以降では、 useCurrent() メソッドを使用してこれを簡素化できます:
$table->timestamp('created_at')->useCurrent();
Laravel 8.36.0 以降では、デフォルト値と更新時の値の両方に対して useCurrent() を useCurrentOnUpdate() メソッドで使用できます:
$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
注意点:
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));
以上がLaravel 移行でタイムスタンプ列のデフォルト値を CURRENT_TIMESTAMP に設定し、自動更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。