首頁 > 後端開發 > Golang > 主體

如何在 gorm 中將結果表的列名從'多”更改為'多”

PHPz
發布: 2024-02-10 13:45:08
轉載
1039 人瀏覽過

如何在 gorm 中将结果表的列名从“多”更改为“多”

在使用 gorm 進行資料庫操作時,有時候我們可能需要將結果表的列名從「多」更改為「多」。這樣做可以讓我們的程式碼更加清晰易讀,提高程式碼的可維護性。那麼,在 gorm 中如何實現這個功能呢?在本文中,php小編草莓將為大家分享一個簡單有效的方法,幫助你輕鬆實現結果表列名的修改。

問題內容

我已經使用 typeorm 玩了很多 nestjs,現在我正在學習使用 golang 和 gorm。我正在 nestjs for go 中重建系統,在使用多對多關係時遇到問題。由於我正在使用已經在生產中並已填充的資料庫,因此我需要對結構進行與其他項目相同的建模,這樣就不會出現問題。

我有兩個以多種方式關聯的表,它們是播放清單流派,在生產資料庫中它們產生playlists_genres > 具有以下字段的表格:

請注意,這些欄位類似於 playlistsidgenresid

#在 golang 專案中,表格的 m2m 結果如下:

請注意,產生的欄位與我需要的不同,我需要為生產中的資料庫產生標識符,即 playlistsidgenresid

我的關係程式碼如下所示:

type playlist struct {
    id        int32     `json:"id" gorm:"primarykey;autoincrement:true"`
    status    bool      `json:"status" gorm:"not null;default:false"`
    createdat time.time `json:"createdat" gorm:"column:created_at;autocreatetime:milli;type:timestamp without time zone;default:now();not null"`
    updatedat time.time `json:"updatedat" gorm:"column:updated_at;autoupdatetime:milli;type:timestamp without time zone;default:now();not null"`

    genres        []genre             `json:"genres" gorm:"many2many:playlists_genres"`
}
登入後複製

type Genre struct {
    ID          int32     `json:"id" gorm:"primaryKey;autoIncrement:true"`
    Name        string    `json:"name" gorm:"not null;type:varchar(255)"`

    Playlists    []Playlist         `json:"playlists" gorm:"many2many:playlists_genres"`
}
登入後複製

我查了很多資料,除了手動建立一個中間表,其中包含我需要的名稱的列並將其從一個到多個關聯之外,我還沒有找到更改這些列名稱的方法。

你能幫我解決這個問題嗎?是否可以在不手動建立表的情況下執行此操作?謝謝!

解決方法

不幸的是,我認為實現您的目標的唯一方法是建立一個名為 PlaylistGenre 的結構並覆寫此處的列名稱。
使用 Gorm 約定,您只能對資料庫中建立的外鍵約束進行操作。沒有機會覆蓋自動建立的連接表的實際列名。
gorm 註解中,您可以使用這些屬性來處理外鍵:foreignKeyreferencesjoinForeignKeyjoinReferences

但是,您需要使用column,這裡是不可能的。

如果您需要這種方法的範例,請告訴我!

以上是如何在 gorm 中將結果表的列名從'多”更改為'多”的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!