이 질문과 유사하지만 일대 다의 경우 : 연결이 테스트 항목으로 작동하지 않음
GORM에 정의 된 두 가지 모델 사용자 및 전자 메일이 있습니다. 파일 user.go
type User struct {
gorm.Model
Identity string `json:"identity"`
Password string `json:"password"`
Emails []Email
}
type Email struct {
gorm.Model
UserID uint
Text string `json:"text"`
Sender string `json:"sender"`
}
문서 에 따르면 이것은 테스트 항목과 함께 작동합니다.
userRec := &user.User{ Identity: "John Wayne", Password: "mysecretpassword", Emails: []user.Email{user.Email{Text: "My Text", Sender: "[email protected]"}, user.Email{Text: "My Text", Sender: "[email protected]"}}}
그러나 이메일 항목은 사용자 개체와 연결되지 않습니다.
User 개체에 참조하는 Email 개체가있는 항목이없는 것이 정상입니까 ( "참조"사례와 반대)?
모든 해당 이메일 개체로 사용자를 쿼리하려면 어떻게해야합니까?
모든 이메일은
var emails[] Email
db.Where("user_id = ?", id).Find(&emails)
열 이름을 참조하여 emails 테이블 을 미리로드 (즉시로드) 해야합니다 .
user := &User{}
db.Preload("Emails").First(user)
일대일 관계를 사용하는 경우 다음을 호출하여 자동으로 수행 할 수도 있습니다.
db.Preload(clause.Associations).Find(user)
참고 : 일대 다 관계 에는 작동 하지 않습니다 .
GORM 문서에 정의 된 중첩 된 사전로드, 조인 및 사전로드 함께 결합 (하위 테이블에서 필터링 또는 정렬 목적으로)과 같은 다른 기능이 지원됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다