首頁 >後端開發 >php教程 >如何在更新 CURRENT_TIMESTAMP 時將 Laravel 時間戳記設定為 CURRENT_TIMESTAMP?

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

DDD
DDD原創
2024-10-20 12:17:02356瀏覽

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

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