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

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

Susan Sarandon
發布: 2024-11-24 20:38:13
原創
913 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板