問題ステートメント
Laravel のタイムスタンプ列のデフォルト値スキーマ ビルダーを使用した移行は「0000-00-00 00:00:00」に設定されます。これを「CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP」に変更するにはどうすればよいですか?
解決策
DB::raw() を使用して、CURRENT_TIMESTAMP を列のデフォルト値として組み込みます:
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
Laravel 5.1.25 以降では、タイムスタンプ列で useCurrent() メソッドを直接使用できます。
$table->timestamp('created_at')->useCurrent();
MySQL の場合は、DB:: を使用して ON UPDATE 句を含めます。 raw() または、Laravel 8.36.0 以降の useCurrentOnUpdate() メソッド:
$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
注意
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));
Laravel 4.x PostgreSQL の問題を特定してくれた @andrewhl と、useCurrentOnUpdate() ショートカットについて @ChanakaKarunarathne に感謝します。
以上がLaravel の移行を使用してタイムスタンプ列に現在のタイムスタンプを設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。