Laravel 5.2 : problème de conversion de clé primaire personnalisée
Lors de l'utilisation d'une chaîne comme clé primaire personnalisée dans l'ORM éloquent de Laravel 5.2, vous peut rencontrer un problème où la valeur de la clé est convertie en 0 lors de sa récupération à partir du base de données.
Explication :
Laravel convertit automatiquement les valeurs d'attribut pour qu'elles correspondent aux types de colonnes de la base de données. Par défaut, les clés primaires auto-incrémentées sont supposées être des nombres entiers. Cependant, dans ce cas, vous utilisez une chaîne comme clé primaire, ce qui entraîne une conversion incorrecte de la valeur.
Solution :
Pour résoudre ce problème, vous devez spécifier explicitement que la clé primaire est une chaîne et qu'elle ne doit pas être automatiquement incrémentée. Pour ce faire, ajoutez le code suivant à votre modèle :
protected $primaryKey = 'your_key_name'; public $incrementing = false;
Assurez-vous de remplacer « your_key_name » par le nom réel de votre colonne de clé primaire.
Explication supplémentaire :
Dans Laravel 6.0 et versions ultérieures, vous devez également définir la propriété $keyType sur 'string' :
protected $keyType = 'string';
Cela spécifie explicitement que la clé primaire est une chaîne et empêche toute conversion de type potentielle.
En implémentant cette solution, vous pourrez utiliser des chaînes comme chaînes personnalisées clés primaires dans vos modèles Laravel Eloquent sans rencontrer de problème de conversion.
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!