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.
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.
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")
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" }
Perhatikan bahawa dalam contoh ini, kami mentakrifkan hubungan kunci asing menggunakan gorm:"foreignkey:..." dan gorm:"association_foreignkey:..." anotasi.
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 }
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!