Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menentukan dan Menggunakan Kekangan Utama Asing dalam GORM?

Bagaimana untuk Menentukan dan Menggunakan Kekangan Utama Asing dalam GORM?

DDD
Lepaskan: 2024-12-13 06:12:19
asal
793 orang telah melayarinya

How to Define and Use Foreign Key Constraints in GORM?

Bagaimana untuk menentukan dan menggunakan kekangan kunci asing dalam GORM?

Dalam bidang reka bentuk pangkalan data, kunci asing memainkan peranan penting dalam mewujudkan perhubungan dan mengekalkan integriti data . Bagi pengguna GORM, memahami cara mentakrif dan menggunakan kekangan kunci asing adalah penting.

Memahami Masalah

Pertimbangkan senario yang diterangkan dalam soalan, di mana kami mempunyai dua model: User dan UserInfo. Kami perlu mewujudkan hubungan kunci asing antara medan UID dalam UserInfo dan medan id dalam Pengguna.

Penjanaan Kunci Asing GORM

Dalam versi GORM sebelum 2.0, kami perlu mentakrifkan asing secara manual kekangan utama menggunakan kaedah AddForeignKey. Dalam GORM 2.0 dan lebih baru, langkah ini tidak lagi diperlukan.

// GORM version 1.x
db.Model(&models.UserInfo{}).AddForeignKey("u_id", "t_user(id)", "RESTRICT", "RESTRICT")
Salin selepas log masuk

Definisi Kunci Asing Automatik

Walau bagaimanapun, untuk versi GORM yang lebih lama, kami masih boleh mentakrifkan kunci asing seperti yang ditunjukkan di bawah.

type User struct {
    DBBase
    Email    string `gorm:"column:email" json:"email"`
    Password string `gorm:"column:password" json:"-"`
}

func (User) TableName() string {
    return "t_user"
}

type UserInfo struct {
    User      User   `gorm:"foreignkey:u_id;association_foreignkey:id"`
    UID       uint   `gorm:"column:u_id" json:"-"`
    FirstName string `gorm:"column:first_name" json:"first_name"`
    LastName  string `gorm:"column:last_name" json:"last_name"`
    Phone     string `gorm:"column:phone" json:"phone"`
    Address   string `gorm:"column:address" json:"address"`
}

func (UserInfo) TableName() string {
    return "t_user_info"
}
Salin selepas log masuk

Perhatikan bahawa dalam contoh ini, kami mentakrifkan hubungan kunci asing menggunakan gorm:"foreignkey:..." dan gorm:"association_foreignkey:..." anotasi.

Menetapkan Nilai Kunci Asing dalam Kod

Seterusnya, mari kita atasi isu penetapan nilai kunci asing dengan betul. Dalam kod yang disediakan:

func (dao *AuthDAO) Register(rs app.RequestScope, user *models.User, userInfo *models.UserInfo) (userErr error, userInfoErr error) {
    createUser := rs.Db().Create(&user)
    userInfo.UID = user.ID
    createUserInfo := rs.Db().Create(&userInfo)

    return createUser.Error, createUserInfo.Error
}
Salin selepas log masuk

Kami menetapkan userInfo.UID kepada user.ID selepas mencipta contoh Pengguna. Pendekatan ini sah dan akan mewujudkan hubungan kunci asing dengan betul.

Kesimpulannya, memahami hubungan kunci asing dan pelaksanaannya dalam GORM adalah penting untuk mengekalkan integriti data dalam aplikasi berasaskan pangkalan data. Dengan mengikuti penyelesaian dan anotasi yang dicadangkan, anda boleh mentakrif dan menggunakan kekangan kunci asing dengan berkesan dalam model GORM anda.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan dan Menggunakan Kekangan Utama Asing dalam GORM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan