Maison > Article > développement back-end > Le préchargement Gorm donne une erreur de colonne ambiguë
L'éditeur PHP Zimo vous présente l'erreur de liste ambiguë dans le préchargement de Gorm. Gorm est une bibliothèque ORM couramment utilisée dans le langage Go pour implémenter des opérations de base de données. Lorsque vous utilisez Gorm pour le préchargement, vous rencontrez parfois des erreurs de colonne ambiguës. La raison de cette erreur peut être que la structure de la table de base de données n'est pas cohérente avec la définition du modèle Gorm ou que le nom de colonne de la table d'association préchargée est incorrect. La solution à ce problème consiste à vérifier la structure de la table de base de données et la définition du modèle Gorm pour s'assurer qu'elles sont cohérentes, et à revérifier que les noms de colonnes de la table d'association préchargés sont corrects. En résolvant cette erreur, vous pouvez utiliser Gorm avec succès pour les opérations de préchargement et améliorer l'efficacité du fonctionnement de la base de données.
J'ai la structure suivante
type employee struct { employeeid int64 `gorm:"primary_key;column:employee_id"` employeecode string `gorm:"column:employee_code"` firstname string `gorm:"column:first_name"` lastname string `gorm:"column:last_name"` designationid int64 `gorm:"column:designation_id;"` designation *designation `gorm:"foreignkey:designationid"` } type designation struct { designationid int64 `gorm:"primary_key;column:designation_id"` designationname string `gorm:"column:designation_name"` } func getemployee(id int64) (*employee, error) { db := connection.getconn() //get connection defer db.close() employee := &employee{} err := db.model(employees).preload("designation", func(db *gorm.db) *gorm.db { return db.join("inner join employees on employees.designation_id = designations.id").order("employees.first_name desc") }).find(employee).error return employee, err }
La requête générée est
SELECT * FROM employees; SELECT * FROM designations INNER JOIN employees ON employees.designation_id = designations.id WHERE id IN (1,2) order by employees.first_name DESC;
J'ai une connexion similaire à ce que j'ai écrit dans la fonction ci-dessus. Ici, je n'arrive pas à me connecter correctement, mais dans le cas réel, je sais que je dois me connecter, et il y a id
champs à la fois dans la table de préchargement et dans la table de jointure.
Puisque les deux tables ont les mêmes noms de colonnes, c'est-à-dire id
dans ce cas, MySQL générera une erreur
错误1052:where子句中的列“id”不明确
J'ai ce problème dans gorm v1.9.16
Je n'ai trouvé aucune ressource mentionnant un problème similaire. Comment pouvons-nous résoudre ce problème ?
Pouvez-vous essayer d'utiliser la dernière version (> v1.20.x) ?
Ce numéro est closhttps://github.com/go-gorm/gorm/issue/2653
Ce problème semble être résolu dans la nouvelle versionhttps://github.com/go-gorm/gorm/commit/2ae0653af2bc19cd31f687e797b189c85f0ac3f6
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!