Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk menukar nama lajur jadual hasil daripada 'banyak' kepada 'banyak' dalam gorm

Bagaimana untuk menukar nama lajur jadual hasil daripada 'banyak' kepada 'banyak' dalam gorm

PHPz
PHPzke hadapan
2024-02-10 13:45:081096semak imbas

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

Apabila menggunakan gorm untuk operasi pangkalan data, kadangkala kita mungkin perlu menukar nama lajur jadual hasil daripada "banyak" kepada "banyak". Melakukan ini boleh menjadikan kod kami lebih jelas dan lebih mudah dibaca serta meningkatkan kebolehselenggaraan kod tersebut. Jadi, bagaimana untuk melaksanakan fungsi ini dalam gorm? Dalam artikel ini, editor PHP Strawberry akan berkongsi dengan anda kaedah yang mudah dan berkesan untuk membantu anda mengubah suai nama lajur jadual hasil dengan mudah.

Kandungan soalan

Saya telah banyak bermain dengan nestjs menggunakan typeorm dan kini saya belajar menggunakan golang dan gorm. Saya sedang membina semula sistem dalam nestjs for go dan saya menghadapi masalah menggunakan perhubungan banyak-ke-banyak. Memandangkan saya bekerja dengan pangkalan data yang sudah dalam pengeluaran dan diisi, saya perlu memodelkan struktur yang sama seperti projek lain supaya tidak ada masalah.

Saya mempunyai dua jadual yang berkaitan dalam banyak cara, ia adalah senarai main dan genre, dalam pangkalan data pengeluaran mereka menjana senarai_genre > jadual dengan medan berikut:

Perhatikan bahawa medan ini serupa dengan playlistsid dan genresid

Dalam projek golang, keputusan m2m jadual adalah seperti berikut:

Sila ambil perhatian bahawa medan yang dijana adalah berbeza daripada yang saya perlukan, saya perlu menjana pengecam untuk pangkalan data dalam pengeluaran, iaitu playlistsid dan genresid.

Kod perhubungan saya kelihatan seperti ini:

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

dan

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

Saya telah banyak mencari dan saya tidak menemui cara untuk menukar nama lajur ini selain daripada membuat jadual perantaraan secara manual dengan lajur dengan nama yang saya perlukan dan mengaitkannya daripada satu kepada banyak.

Bolehkah anda membantu saya menyelesaikan masalah ini? Adakah mungkin untuk melakukan ini tanpa membuat jadual secara manual? Terima kasih!

Penyelesaian

Malangnya, saya rasa satu-satunya cara untuk mencapai matlamat anda ialah dengan mencipta struktur yang dipanggil PlaylistGenre dan mengatasi nama lajur di sini.
Menggunakan konvensyen Gorm, anda hanya boleh beroperasi pada kekangan kunci asing yang dibuat dalam pangkalan data. Tiada peluang untuk menulis ganti nama lajur sebenar jadual gabungan yang dibuat secara automatik.
Dalam gorm 注释中,您可以使用这些属性来处理外键:foreignKeyreferencesjoinForeignKeyjoinReferences.

Namun, anda perlu menggunakan column, yang tidak boleh dilakukan di sini.

Jika anda memerlukan contoh pendekatan ini, sila beritahu saya!

Atas ialah kandungan terperinci Bagaimana untuk menukar nama lajur jadual hasil daripada 'banyak' kepada 'banyak' dalam gorm. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam