Laravel 5.2:Eloquent 表的自訂主鍵- 避免零值
在Laravel 5.2 中,使用字串作為Eloquent 表的自定義主鍵Eloquent 表可能會導致意外行為:主鍵的值變為零(0)。為了解決這個問題,有必要了解 Eloquent 模型屬性轉換機制的特定面向。
預設情況下,Eloquent 會嘗試將特定屬性轉換為其適當的資料類型。對於自增表,ID 假定為整數。但是,當使用字串作為主鍵時,這種轉換會導致鍵值錯誤地轉換為 0。
要解決此問題,可以採用三種策略:
方法一:停用增量
在模型類別中將$incrementing 屬性設定為false 表示該表的主鍵不會自動遞增。這告訴 Eloquent 不要對主鍵套用整數轉換。
class UserVerification extends Model { protected $primaryKey = 'verification_token'; public $incrementing = false; }
方法2:指定遞增鍵
如果模型的主鍵是整數,即使它不是自動遞增,但將$incrementing 設為false 可能並不合適。相反,使用 $keyType 屬性指定主鍵的資料類型。
class UserVerification extends Model { protected $primaryKey = 'verification_token'; protected $keyType = 'string'; }
方法 3:明確轉換主鍵
另一種方法是明確轉換將主鍵轉換為 Eloquent 查詢本身中的字串。這可確保主鍵作為字串處理,無論模型的預設設定為何。
UserVerification::where('verification_token', (string) $token)->first();
以上是在 Laravel 5.2 Eloquent 模型中使用自訂字串主鍵時如何避免零值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!