PHP-Editor Zimo stellt Ihnen den mehrdeutigen Spaltenfehler beim Gorm-Vorladen vor. Gorm ist eine ORM-Bibliothek, die häufig in der Go-Sprache zur Implementierung von Datenbankoperationen verwendet wird. Wenn Sie Gorm zum Vorabladen verwenden, treten manchmal mehrdeutige Spaltenfehler auf. Der Grund für diesen Fehler kann sein, dass die Datenbanktabellenstruktur nicht mit der Gorm-Modelldefinition übereinstimmt oder der vorinstallierte Spaltenname der Zuordnungstabelle falsch ist. Die Lösung für dieses Problem besteht darin, die Datenbanktabellenstruktur und die Gorm-Modelldefinition zu überprüfen, um sicherzustellen, dass sie konsistent sind, und noch einmal zu überprüfen, ob die vorinstallierten Spaltennamen der Zuordnungstabelle korrekt sind. Durch die Behebung dieses Fehlers können Sie Gorm erfolgreich für Vorladevorgänge verwenden und die Effizienz des Datenbankbetriebs verbessern.
Ich habe folgenden Aufbau
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 }
Die generierte Abfrage ist
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;
Ich habe eine ähnliche Verbindung wie die, die ich oben in der Funktion geschrieben habe. Hier kann ich keine korrekte Verbindung herstellen, aber im echten Fall weiß ich, dass ich eine Verbindung herstellen muss, und es gibt id
Felder sowohl in der Preload-Tabelle als auch in der Join-Tabelle.
Da beide Tabellen dieselben Spaltennamen haben, d. h. id
, wird MySQL in diesem Fall einen Fehler auslösen
错误1052:where子句中的列“id”不明确
Ich habe dieses Problem in gorm v1.9.16
Ich habe keine Ressourcen gefunden, die ein ähnliches Problem erwähnten. Wie lösen wir dieses Problem?
Können Sie versuchen, die neueste Version (> v1.20.x) zu verwenden?
Dieses Problem ist geschlossenhttps://github.com/go-gorm/gorm/issue/2653
Dieses Problem scheint in der neuen Version behoben zu seinhttps://github.com/go-gorm/gorm/commit/2ae0653af2bc19cd31f687e797b189c85f0ac3f6
Das obige ist der detaillierte Inhalt vonDas Vorladen von Gorm führt zu einem mehrdeutigen Spaltenfehler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!