Maison >base de données >tutoriel mysql >Comment empêcher Eloquent de convertir une clé primaire de chaîne en 0 dans Laravel 5.2 ?

Comment empêcher Eloquent de convertir une clé primaire de chaîne en 0 dans Laravel 5.2 ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-04 00:07:14341parcourir

How to Prevent Eloquent from Casting a String Primary Key to 0 in Laravel 5.2?

Laravel 5.2 : Utiliser une chaîne comme clé primaire personnalisée pour la table Eloquent

Lorsque vous travaillez avec des modèles Eloquent dans Laravel 5.2, il est possible pour rencontrer un problème où une clé primaire personnalisée de type chaîne est convertie en 0 lors de la récupération de données à partir du base de données.

Énoncé du problème :
Un utilisateur a rencontré ce problème lors de l'utilisation d'un e-mail comme clé primaire pour une table, ce qui fait que la valeur de la clé primaire devient 0 après l'avoir récupérée à l'aide de la méthode Where.

Solution :
Pour résoudre ce problème, il est nécessaire d'informer Laravel que la clé primaire est pas un entier auto-incrémenté. Ceci peut être réalisé en définissant à la fois les propriétés $incrementing et $primaryKey dans la classe de modèle. De plus, définir la propriété $keyType sur « string » est recommandé dans les versions de Laravel 6.0.

Voici un exemple de mise à jour de la classe de modèle :

class UserVerification extends Model
{
    protected $primaryKey = 'verification_token';
    public $incrementing = false;
    protected $keyType = 'string';
}

En apportant ces modifications, Laravel sera conscient que la clé primaire est une chaîne et ne tentera pas de la convertir en entier, résolvant ainsi le problème où la clé primaire devient 0.

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!

Déclaration:
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