如何在 Laravel 遷移中將時間戳列的預設值設為 CURRENT_TIMESTAMP 並自動更新?

Barbara Streisand
發布: 2024-10-20 12:26:02
原創
381 人瀏覽過

How Do I Set the Default Value of Timestamp Columns to CURRENT_TIMESTAMP and Auto Update in Laravel Migrations?

在Laravel 遷移中將時間戳列的預設值設定為當前時間戳

問題: 如何建立問題時間戳列的預設值為CURRENT_TIMESTAMP 並在Laravel 遷移中將其更新為CURRENT_TIMESTAMP?

Laravel 的 Schema Builder 沒有明確提供將時間戳列的預設值設為 CURRENT_TIMESTAMP 的方法。

答案:

要將預設值設為CURRENT_TIMESTAMP,請使用DB::raw() 方法定義原始表達式:

$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
登入後複製

對於MySQL,您可以另外,在DB::raw() 中使用ON UPDATE 子句:

$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
登入後複製

從Laravel 5.1.25 開始,您可以使用useCurrent() 方法來簡化此操作:

$table->timestamp('created_at')->useCurrent();
登入後複製

在Laravel 8.36.0 及更高版本中,useCurrent() 可以與useCurrentOnUpdate() 方法一起用於預設值和更新值:

$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();
登入後複製

  • 陷阱:
  • MySQL:
從版本5.7 開始,0000-00-00 00:00:00 不再有效作為時間戳。使用 useCurrent() 或允許 null 值。
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));
登入後複製
Laravel 4.x 中的 PostgreSQL: 為 CURRENT_TIMESTAMP 函數指定零精確度以避免微秒錯誤。

以上是如何在 Laravel 遷移中將時間戳列的預設值設為 CURRENT_TIMESTAMP 並自動更新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!