데이터베이스 설계 영역에서 외래 키는 관계를 설정하고 데이터 무결성을 유지하는 데 중요한 역할을 합니다. . GORM 사용자의 경우 외래 키 제약 조건을 정의하고 사용하는 방법을 이해하는 것이 필수적입니다.
질문에 설명된 시나리오를 고려하면 User와 UserInfo라는 두 가지 모델이 있습니다. UserInfo의 UID 필드와 User의 id 필드 사이에 외래 키 관계를 설정해야 합니다.
GORM 2.0 이전 버전에서는 외래 키를 수동으로 정의해야 했습니다. AddForeignKey 메서드를 사용하여 키 제약 조건을 적용합니다. GORM 2.0 이상에서는 이 단계가 더 이상 필요하지 않습니다.
// GORM version 1.x db.Model(&models.UserInfo{}).AddForeignKey("u_id", "t_user(id)", "RESTRICT", "RESTRICT")
그러나 이전 버전의 GORM에서는 여전히 아래와 같이 외래 키를 정의할 수 있습니다.
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" }
이 예에서는 외래 키 관계 menggunakan을 정의합니다. gorm:"foreignkey:..." 및 gorm:"association_foreignkey:..." 주석.
다음으로 외래 키 값 설정 문제를 다루겠습니다. 바르게. 제공된 코드에서:
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 }
User 인스턴스를 생성한 후 userInfo.UID를 user.ID로 설정합니다. 이 접근 방식은 유효하며 외래 키 관계를 올바르게 설정합니다.
결론적으로, 외래 키 관계와 GORM의 구현을 이해하는 것은 데이터베이스 기반 애플리케이션에서 데이터 무결성을 유지하는 데 중요합니다. 제안된 솔루션과 주석을 따르면 GORM 모델에서 외래 키 제약 조건을 효과적으로 정의하고 활용할 수 있습니다.
위 내용은 GORM에서 외래 키 제약 조건을 정의하고 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!