首頁  >  文章  >  後端開發  >  Gorm 預載給了不明確的列錯誤

Gorm 預載給了不明確的列錯誤

王林
王林轉載
2024-02-10 19:12:07526瀏覽

Gorm 预加载给出了不明确的列错误

php小編子墨為您介紹Gorm預先載入中的不明確列錯誤。 Gorm是一個在Go語言中常用的ORM函式庫,用來實作資料庫操作。在使用Gorm進行預先載入時,有時會遇到列不明確的錯誤。這個錯誤的原因可能是資料庫表結構與Gorm模型定義不一致,或是預先載入的關聯表列名不正確。解決這個問題的方法是檢查資料庫表結構和Gorm模型定義,確保它們一致,並仔細檢查預先載入的關聯表列名是否正確。透過解決這個錯誤,您可以順利使用Gorm進行預先載入操作,提高資料庫操作效率。

問題內容

我有以下結構

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
}

產生的查詢是

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;

我有一個類似於我在上面函數中編寫的連接。在這裡,我無法正確連接,但在實際情況下,我知道需要連接,並且預先載入表和連接表中都有 id 欄位。 由於兩個表具有相同的列名,即 id 在這種情況下 mysql 會拋出錯誤

錯誤1052:where子句中的欄位「id」不明確

#我在 gorm v1.9.16 中遇到這個問題

我沒有找到任何提到類似問題的資源。 我們如何解決這個問題?

解決方法

您可以嘗試使用最新版本(> v1.20.x)嗎?

該問題已關閉https://github.com/go-gorm/ gorm/問題/2653

#這個問題似乎在新版本中得到了解決https://github.com /go-gorm/gorm/commit/2ae0653af2bc19cd31f687e797b189c85f0ac3f6

以上是Gorm 預載給了不明確的列錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除