Heim >Backend-Entwicklung >PHP-Tutorial >Wann wandelt Eloquent einen String-Primärschlüssel in 0 um?
Problem mit dem benutzerdefinierten Primärschlüssel von Eloquent: „verification_token“ wird 0
Beim Versuch, eine Zeichenfolge als Primärschlüssel für eine Eloquent-Tabelle zu verwenden In Laravel 5.2 tritt ein unerwartetes Problem auf, bei dem der Primärschlüssel, der ursprünglich auf ein Verifizierungstoken gesetzt war, beim Abrufen der Tabellendaten in 0 umgewandelt wird.
Dieses Verhalten ist auf die standardmäßige Umwandlung von Attributen innerhalb der Laravel-Modellklasse zurückzuführen. Bei Tabellen mit automatisch inkrementierenden IDs wird die ID automatisch in eine Ganzzahl umgewandelt. Wenn der Primärschlüssel jedoch eine Zeichenfolge ist, führt dieser Umwandlungsprozess dazu, dass der Schlüssel als Null interpretiert wird.
Um dieses Problem zu beheben, nehmen Sie die folgenden Anpassungen am Eloquent-Modell vor:
<code class="php">protected $primaryKey = 'verification_token';</code>
<code class="php">public $incrementing = false;</code>
<code class="php">protected $keyType = 'string';</code>
Diese Änderungen weisen Laravel an, den Primärschlüssel als Zeichenfolge und nicht als Ganzzahl zu behandeln, um sicherzustellen, dass er seinen ursprünglichen Wert behält beim Abrufen der Modellattribute.
Durch die Implementierung dieser Änderungen können Sie erfolgreich eine Zeichenfolge als benutzerdefinierten Primärschlüssel in Ihrer Eloquent-Tabelle verwenden, ohne dass das Problem auftritt, dass der Primärschlüssel 0 wird.
Das obige ist der detaillierte Inhalt vonWann wandelt Eloquent einen String-Primärschlüssel in 0 um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!