亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

帶有golang的Gorm:預加載無法按預期工作

帶有golang的Gorm:預加載無法按預期工作

Go
牧羊人nacy 2022-06-13 10:28:33
我有以下結構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}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(employee).Preload("Designation").Find(employee).Error    return employee, err }在表格中,我有以下記錄:employee :employee_id | employee_code | first_name | last_name | designation_id          1 |  EMP1         |  Raj       |  Mane     | 1designation:designation_id | designation_name             1 |  Engineer      employee.designation_id 被標記為外鍵引用指定表當我調用函數 GetEmployee 時,它返回錯誤說無法為 model.Employee 預加載字段 Designation我已經提到了許多與 Preload 相關的問題,但沒有一個解決方案有效。我認為其他工作案例之間的唯一區別是主要 id 列名。誰能建議正在發生的事情以及我在這里缺少什么?
查看完整描述

2 回答

?
慕俠2389804

TA貢獻1719條經驗 獲得超6個贊

在 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"`

}


查看完整回答
反對 回復 2022-06-13
?
慕仙森

TA貢獻1827條經驗 獲得超8個贊

只需將變量名稱從 DesignationID 更改為 DesignationDesignationID。它會起作用的。根據文檔 ForignKey 必須是 TABLE_NAME + PRIMARY_KEY_NAME 所以這里的表是 DESIGNATION 和主鍵 DESIGNATIONID


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"`

    DesignationDesignationID     int64 

    Designation       *Designation

}


type Designation struct {

    DesignationID   int64  `gorm:"primary_key;`

    DesignationName string `gorm:"column:designation_name"`

}


查看完整回答
反對 回復 2022-06-13
  • 2 回答
  • 0 關注
  • 241 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號