如何使用 Laravel 遷移以目前時間戳記填滿時間戳列?

Barbara Streisand
發布: 2024-10-20 12:28:30
原創
958 人瀏覽過

How Do I Populate Timestamp Columns with Current Timestamp Using Laravel Migrations?

如何使用Laravel 遷移使用當前時間戳填充時間戳列

問題陳述

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();
登入後複製

注意事項

  • MySQL(版本5.7 及以上) ):0005> -00-00 00:00:00”不再有效。因此,為時間戳記列提供有效的預設值(例如 useCurrent() 或 nullable())。
  • PostgreSQL (Laravel 4.x): 確保CURRENT_TIMESTAMP 指定零精度以防止由於小數秒導致的時間戳解析錯誤:
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));
登入後複製

感謝@andrewhl 識別Laravel 4.x PostgreSQL 問題,以及@ChanakaKarunarathne 提供useCurrentOnUpdate() 快捷方式。

以上是如何使用 Laravel 遷移以目前時間戳記填滿時間戳列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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