Heim  >  Artikel  >  Backend-Entwicklung  >  Wann wandelt Eloquent einen String-Primärschlüssel in 0 um?

Wann wandelt Eloquent einen String-Primärschlüssel in 0 um?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-19 16:55:02233Durchsuche

When Does Eloquent Cast a String Primary Key as 0?

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:

  1. Definieren Sie den Primärschlüssel explizit mit $primaryKey:
<code class="php">protected $primaryKey = 'verification_token';</code>
  1. Verhindern Sie die automatische Inkrementierung, indem Sie $incrementing auf „false“ setzen:
<code class="php">public $incrementing = false;</code>
  1. Für Laravel-Versionen 6.0 oder höher definieren Sie zusätzlich den $keyType:
<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!

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