Maison > base de données > tutoriel mysql > Comment éviter les valeurs zéro lors de l'utilisation de clés primaires de chaîne personnalisées dans les modèles éloquents Laravel 5.2 ?

Comment éviter les valeurs zéro lors de l'utilisation de clés primaires de chaîne personnalisées dans les modèles éloquents Laravel 5.2 ?

Barbara Streisand
Libérer: 2024-11-26 11:06:13
original
375 Les gens l'ont consulté

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

Laravel 5.2 : Clé primaire personnalisée pour une table éloquente - Éviter les valeurs nulles

Dans Laravel 5.2, utiliser une chaîne comme clé primaire personnalisée pour une table Eloquent peut entraîner un comportement inattendu : la valeur de la clé primaire devient zéro (0). Pour résoudre ce problème, il est essentiel de comprendre un aspect spécifique du mécanisme de conversion d'attributs du modèle Eloquent.

Par défaut, Eloquent tente de convertir des attributs spécifiques en leurs types de données appropriés. Pour les tables à incrémentation automatique, l'ID est supposé être un nombre entier. Cependant, lors de l'utilisation d'une chaîne comme clé primaire, ce casting entraîne une conversion incorrecte de la valeur de la clé en 0.

Pour résoudre ce problème, trois stratégies peuvent être utilisées :

Méthode 1 : désactiver l'incrémentation

La définition de la propriété $incrementing sur false dans la classe modèle indique que la clé primaire de la table n'est pas auto-incrémentation. Cela indique à Eloquent de ne pas appliquer la conversion d'entier à la clé primaire.

class UserVerification extends Model
{
    protected $primaryKey = 'verification_token';
    public $incrementing = false;
}
Copier après la connexion

Méthode 2 : spécifier la clé d'incrémentation

Dans les cas où la clé primaire du modèle est un nombre entier , même s'il ne s'incrémente pas automatiquement, définir $incrementing sur false peut ne pas être approprié. Au lieu de cela, spécifiez le type de données de la clé primaire à l'aide de la propriété $keyType.

class UserVerification extends Model
{
    protected $primaryKey = 'verification_token';
    protected $keyType = 'string';
}
Copier après la connexion

Méthode 3 : convertir explicitement la clé primaire

Une approche alternative consiste à convertir explicitement la clé primaire. convertissez la clé primaire en une chaîne dans la requête Eloquent elle-même. Cela garantit que la clé primaire est traitée comme une chaîne, quels que soient les paramètres par défaut du modèle.

UserVerification::where('verification_token', (string) $token)->first();
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal