Heim >Datenbank >MySQL-Tutorial >Wie kann verhindert werden, dass Eloquent in Laravel 5.2 einen String-Primärschlüssel auf 0 umwandelt?
Laravel 5.2: Verwenden eines Strings als benutzerdefinierten Primärschlüssel für Eloquent Table
Beim Arbeiten mit Eloquent-Modellen in Laravel 5.2 ist dies möglich um auf ein Problem zu stoßen, bei dem ein benutzerdefinierter Primärschlüssel vom Typ Zeichenfolge beim Abrufen von Daten aus dem in 0 umgewandelt wird Datenbank.
Problemstellung:
Ein Benutzer ist auf dieses Problem gestoßen, als er eine E-Mail als Primärschlüssel für eine Tabelle verwendete, was dazu führte, dass der Primärschlüsselwert 0 wurde, nachdem er ihn mit der abgerufen hatte where-Methode.
Lösung:
Um dieses Problem zu beheben, muss Laravel darüber informiert werden, dass der Primärschlüssel nicht vorhanden ist eine automatisch inkrementierende Ganzzahl. Dies kann erreicht werden, indem sowohl die Eigenschaften $incrementing als auch $primaryKey in der Modellklasse festgelegt werden. Darüber hinaus wird in Laravel 6.0-Versionen empfohlen, die Eigenschaft $keyType auf „string“ zu setzen.
Hier ist ein Beispiel für die Aktualisierung der Modellklasse:
class UserVerification extends Model { protected $primaryKey = 'verification_token'; public $incrementing = false; protected $keyType = 'string'; }
Durch diese Änderungen, Laravel erkennt, dass der Primärschlüssel eine Zeichenfolge ist und versucht nicht, ihn in eine Ganzzahl umzuwandeln, wodurch das Problem behoben wird, bei dem der Primärschlüssel 0 wird.
Das obige ist der detaillierte Inhalt vonWie kann verhindert werden, dass Eloquent in Laravel 5.2 einen String-Primärschlüssel auf 0 umwandelt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!