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

Patricia Arquette
Freigeben: 2024-10-19 16:55:02
Original
231 Leute haben es durchsucht

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>
Nach dem Login kopieren
  1. Verhindern Sie die automatische Inkrementierung, indem Sie $incrementing auf „false“ setzen:
<code class="php">public $incrementing = false;</code>
Nach dem Login kopieren
  1. Für Laravel-Versionen 6.0 oder höher definieren Sie zusätzlich den $keyType:
<code class="php">protected $keyType = 'string';</code>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!