Heim > Datenbank > MySQL-Tutorial > Wie vermeide ich Nullwerte bei der Verwendung benutzerdefinierter String-Primärschlüssel in Laravel 5.2 Eloquent-Modellen?

Wie vermeide ich Nullwerte bei der Verwendung benutzerdefinierter String-Primärschlüssel in Laravel 5.2 Eloquent-Modellen?

Barbara Streisand
Freigeben: 2024-11-26 11:06:13
Original
348 Leute haben es durchsucht

How to Avoid Zero Values When Using Custom String Primary Keys in Laravel 5.2 Eloquent Models?

Laravel 5.2: Benutzerdefinierter Primärschlüssel für eloquente Tabellen – Vermeidung von Nullwerten

In Laravel 5.2 wird eine Zeichenfolge als benutzerdefinierter Primärschlüssel für verwendet Eine Eloquent-Tabelle kann zu einem unerwarteten Verhalten führen: Der Wert des Primärschlüssels wird Null (0). Um dieses Problem zu lösen, ist es wichtig, einen bestimmten Aspekt des Attributumwandlungsmechanismus des Eloquent-Modells zu verstehen.

Standardmäßig versucht Eloquent, bestimmte Attribute in die entsprechenden Datentypen umzuwandeln. Bei automatisch inkrementierenden Tabellen wird davon ausgegangen, dass die ID eine Ganzzahl ist. Wenn jedoch eine Zeichenfolge als Primärschlüssel verwendet wird, führt diese Umwandlung zu einer falschen Konvertierung des Schlüsselwerts in 0.

Um dieses Problem zu lösen, können drei Strategien angewendet werden:

Methode 1: Inkrementierung deaktivieren

Das Festlegen der Eigenschaft $incrementing in der Modellklasse auf „false“ zeigt an, dass der Primärschlüssel der Tabelle nicht vorhanden ist automatische Inkrementierung. Dadurch wird Eloquent angewiesen, keine Ganzzahlumwandlung auf den Primärschlüssel anzuwenden.

class UserVerification extends Model
{
    protected $primaryKey = 'verification_token';
    public $incrementing = false;
}
Nach dem Login kopieren

Methode 2: Inkrementierungsschlüssel angeben

In Fällen, in denen der Primärschlüssel des Modells eine Ganzzahl ist Auch wenn es sich nicht um eine automatische Inkrementierung handelt, ist es möglicherweise nicht angemessen, $incrementing auf „false“ zu setzen. Geben Sie stattdessen den Datentyp des Primärschlüssels mithilfe der Eigenschaft $keyType an.

class UserVerification extends Model
{
    protected $primaryKey = 'verification_token';
    protected $keyType = 'string';
}
Nach dem Login kopieren

Methode 3: Primärschlüssel explizit umwandeln

Ein alternativer Ansatz ist die explizite Umwandlung Wandeln Sie den Primärschlüssel in eine Zeichenfolge innerhalb der Eloquent-Abfrage selbst um. Dadurch wird sichergestellt, dass der Primärschlüssel unabhängig von den Standardeinstellungen des Modells als Zeichenfolge behandelt wird.

UserVerification::where('verification_token', (string) $token)->first();
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie vermeide ich Nullwerte bei der Verwendung benutzerdefinierter String-Primärschlüssel in Laravel 5.2 Eloquent-Modellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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