問題:
Laravel のスキーマ ビルダー/移行では、ユーザーデフォルト値を使用してタイムスタンプ列を作成する方法に関するガイダンスを求めてください。 CURRENT_TIMESTAMP を更新時の CURRENT_TIMESTAMP。 timestamps() 関数は現在、作成された列と更新された列の両方でデフォルトで 0000-00-00 00:00 に設定されています。
解決策:
デフォルト値を設定するにはLaravel 移行を使用してタイムスタンプ列を 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 CURRENT_TIMESTAMP は次のようにできます。経由で使用されるDB::raw():
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
Laravel 8.36.0 以降では、useCurrent() と useCurrentOnUpdate() を一緒に使用することで、同じ:
$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
注意点:
Laravel 4.x の問題については @andrewhl に、また問題については @ChanakaKarunarathne に感謝します。 useCurrentOnUpdate() ショートカット。
以上がLaravel の移行でデフォルトのタイムスタンプ列を CURRENT_TIMESTAMP に設定する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。