Heim >Datenbank >MySQL-Tutorial >Wie kann verhindert werden, dass Eloquent in Laravel 5.2 einen String-Primärschlüssel auf 0 umwandelt?

Wie kann verhindert werden, dass Eloquent in Laravel 5.2 einen String-Primärschlüssel auf 0 umwandelt?

Linda Hamilton
Linda HamiltonOriginal
2024-12-04 00:07:14341Durchsuche

How to Prevent Eloquent from Casting a String Primary Key to 0 in Laravel 5.2?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn