首頁  >  文章  >  後端開發  >  Eloquent 什麼時候將字串主鍵轉換為 0?

Eloquent 什麼時候將字串主鍵轉換為 0?

Patricia Arquette
Patricia Arquette原創
2024-10-19 16:55:02232瀏覽

When Does Eloquent Cast a String Primary Key as 0?

Eloquent 自訂主鍵問題:「verification_token」變成0

嘗試使用字串作為Eloquent 表的主鍵時Laravel 5.2 中,出現了一個意外問題,最初設定為驗證令牌的主鍵在檢索表格資料時轉換為0。

此行為源自於 Laravel Model 類別中屬性的預設轉換。對於具有自動遞增 ID 的表,ID 會自動轉換為整數。但是,當主鍵是字串時,此轉換過程會導致鍵被解釋為零。

要解決此問題,請對Eloquent 模型進行以下調整:

  1. 使用$primaryKey 顯式定義主鍵:
<code class="php">protected $primaryKey = 'verification_token';</code>
  1. 透過將$incrementing 設為false 來防止自動遞增:
<code class="php">public $incrementing = false;</code>
  1. 對於Laravel 6.0 或更高版本,額外定義$keyType:
<code class="php">protected $keyType = 'string';</code>

這些修改指示Laravel 將主鍵視為字串而不是整數,確保它保留其原始值取得模型的屬性後。

透過實作這些更改,您可以成功使用字串作為 Eloquent 表中的自訂主鍵,而不會遇到主鍵變為 0 的問題。

以上是Eloquent 什麼時候將字串主鍵轉換為 0?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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