第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

GORM 外鍵似乎沒有添加適當(dāng)?shù)淖侄?/h1>

我有以下模型:type Drink struct {    gorm.Model           // Adds some metadata fields to the table    ID         uuid.UUID `gorm:"type:uuid;primary key"`    Name       string    `gorm:"index;not null;"`    Volume     float64   `gorm:"not null;type:decimal(10,2)"`    ABV        float64   `gorm:"not null;type:decimal(10,2);"`    Price      float64   `gorm:"not null;type:decimal(10,2);"`    Location   Location  `gorm:"ForeignKey:DrinkID;"`}type Location struct {    gorm.Model           // Adds some metadata fields to the table    ID         uuid.UUID `gorm:"primary key;type:uuid"`    DrinkID    uuid.UUID    Name       string `gorm:"not null;"`    Address    string `gorm:"not null;type:decimal(10,2)"`    Phone      int    `gorm:"not null;type:decimal(10,0);"`}但是,當(dāng)我運(yùn)行該程序時,它會添加兩個表,但是 Drink 表中沒有位置字段。遷移后我的數(shù)據(jù)庫看起來像這樣,不管我之前是否刪除過表:我有一種潛移默化的感覺,這可能是因為我沒有使用 gorm 默認(rèn) ID,但如果是這種情況,誰能告訴我如何用 UUID 而不是 uint 以正確的方式覆蓋默認(rèn) ID?或者,如果這甚至不是問題,拜托,我已經(jīng)為此工作了幾天,我真的不想走僅使用 gorm 提供的默認(rèn)設(shè)置的“簡單”道路,我實際上想了解什么在這里進(jìn)行以及如何正確地做我想做的事情。運(yùn)行 API 時我沒有收到任何錯誤,并且遷移似乎也在運(yùn)行,只是我定義的字段實際上沒有顯示在數(shù)據(jù)庫中,這意味著前端將無法正確添加數(shù)據(jù)。我想在這里發(fā)生的是在前端提供一個商店列表,當(dāng)用戶添加飲料時,他們將不得不從該商店列表中進(jìn)行選擇。添加的每種飲料只能有 1 個商店,因為不同商店的飲料價格會有所不同。所以從技術(shù)上講,飲料桌上會有很多“重復(fù)”的飲料,但連接到不同的位置。
查看完整描述

1 回答

?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗 獲得超12個贊

  • 第一點是因為您正在使用自定義主鍵,所以您不應(yīng)該使用它gorm.Model,因為它包含ID字段。參考

  • 第二點根據(jù)你的描述,store(location) 和 是一對多的關(guān)系drink。這意味著一家商店可以有多種飲料,但一種飲料應(yīng)該只屬于一家商店。在one-to-many 關(guān)系中,旁邊應(yīng)該有一個參考或關(guān)系 ID many 。這意味著你在drink表中的情況。那么你的結(jié)構(gòu)應(yīng)該是這樣的:

我的模型結(jié)構(gòu)

type MyModel struct {

  CreatedAt time.Time

  UpdatedAt time.Time

  DeletedAt gorm.DeletedAt `gorm:"index"`

}

位置結(jié)構(gòu)(商店)

type Location struct {

    MyModel

    ID         uuid.UUID `gorm:"primary key;type:uuid"`

    // other columns...

    Drinks     []Drink 

}

飲料結(jié)構(gòu)

type Drink struct {

    MyModel

    ID         uuid.UUID `gorm:"type:uuid;primary key"`

    //other columns...

    LocationID   uuid.UUID// This is important

}

然后gorm會自動考慮drink表中的 LocationID 將引用位置表的 ID 字段。您還可以在 Location 結(jié)構(gòu)的 Drinks 數(shù)組字段中明確指示它使用 gorm gorm:"foreignKey:LocationID;references:ID"。



查看完整回答
反對 回復(fù) 2023-02-21
  • 1 回答
  • 0 關(guān)注
  • 132 瀏覽
慕課專欄
更多

添加回答

了解更多

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號