如何在更新 CURRENT_TIMESTAMP 時將 Laravel 時間戳記設定為 CURRENT_TIMESTAMP?

DDD
發布: 2024-10-20 12:17:02
原創
246 人瀏覽過

How to Set Laravel Timestamps to CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP?

Laravel 遷移的預設時間戳

Laravel 的架構產生器簡化了資料庫架構操作,但是將時間戳列的預設值設為目前時間戳記可能是一個挑戰。

問題:

在 Laravel 中,timestamps() 產生預設值為 0000-00-00 00:00 的時間戳列。我們如何使用 Laravel 遷移將此預設值設為 CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP?

解決方案:

要指定CURRENT_TIMESTAMP 作為時間戳列的預設值,請使用DB: :raw():

<code class="php">$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));</code>
登入後複製

從Laravel 5.1.25 開始,使用useCurrent() 欄位修飾符:

<code class="php">$table->timestamp('created_at')->useCurrent();</code>
登入後複製

對於ON UPDATE 子句,我們可以使用DB::raw ():

<code class="php">$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));</code>
登入後複製

從Laravel 8.36.0 開始,使用useCurrentOnUpdate() 修飾符:

<code class="php">$table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate();</code>
登入後複製

陷阱:

  • SQL:從版本🎜>
  • My
  • SQL:從版本🎜>My開始,0000-00-00 00:00:00 不再是有效日期。設定有效的預設值或使用 nullable() 時間戳記。
<code class="php">$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP(0)'));</code>
登入後複製
PostgreSQL 和 Laravel 4.x: 為 CURRENT_TIMESTAMP 指定零精確度以避免微秒解析問題。

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

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