首頁 >資料庫 >mysql教程 >如何在 Laravel 遷移中設定預設時間戳記和自動更新時間戳記?

如何在 Laravel 遷移中設定預設時間戳記和自動更新時間戳記?

Susan Sarandon
Susan Sarandon原創
2024-11-24 20:38:13914瀏覽

How to Set Default Timestamps and Auto-Update Timestamps in Laravel Migrations?

將目前時間戳設定為Laravel Migrations 中時間戳列的預設值

問:如何在Laravel Migrations 中設定時間戳列預設為目前時間戳,並可選擇根據值更新自身變更?

A: Laravel 的Schema Builder 提供了一個簡單的方法來實現此目的:

$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));

DB::raw 是用於建立原始表達式,允許我們將CURRENT_TIMESTAMP設定為 預設。該解決方案可以在各種資料庫驅動程式中有效運作。

Laravel 中的增強功能:

  • useCurrent()(從 Laravel 5.1.25 開始提供) ):將預設值設定簡化為目前時間戳,取代DB::raw('CURRENT_TIMESTAMP').
$table->timestamp('created_at')->useCurrent();
  • useCurrentOnUpdate()(從Laravel 8.36.0開始提供):添加能夠在值發生變化時更新時間戳useCurrent().
$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();

注意事項:

MySQL(5.7 以上):

確保為時間戳列分配有效的預設值以避免潛在的問題無效日期的問題(例如 0000-00-00 00:00:00)。使用

useCurrent() 或使列可為空。

PostgreSQL 與 Laravel 4.x:

    時間戳列的預設精確度可能會導致意外行為。
  • 使用
  • CURRENT_TIMESTAMP(0) 或更新至 Laravel 5.0 以使用預設精確度零並避免這些問題。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn