Go용 강력한 ORM인 GORM에서는 데이터베이스 테이블을 나타내는 구조체 간의 연결을 생성할 수 있습니다. 이 시나리오에는 각 장소가 하나의 타운에 속하는 타운 구조체와 연결된 장소 구조체가 있습니다.
귀하의 코드는 현재 모든 장소 레코드를 가져오지만 각 장소에 연결된 타운 정보를 포함하려고 합니다. 쿼리 오류는 외래 키 TownID가 Place 구조체에 지정되지 않았다는 것입니다.
이 문제를 해결하려면 Place 구조체를 수정하세요.
type Place struct { ID int Name string TownID int // The foreign key Town Town }
이제 다음과 같은 여러 옵션이 있습니다. 관련 타운 데이터 검색:
옵션 1: 수동 로드( 권장)
각 장소를 반복하고 Model.Related:
places := []Place{} db.Find(&places) for i, _ := range places { db.Model(places[i]).Related(&places[i].Town) }
이 접근 방식은 예상 결과를 생성하는 동안 "N 1" 문제가 발생합니다. " 문제는 각 장소에 대해 여러 데이터베이스 쿼리가 실행되는 경우입니다.
옵션 2: 사전 로드 (권장)
장소 기록을 가져오는 동안 관련 타운을 즉시 로드하려면 사전 로드 기능을 사용하세요.
db.Preload("Town").Find(&places)
이렇게 하면 모든 장소를 가져오는 쿼리와 모든 장소를 가져오는 쿼리, 두 가지 쿼리만 실행됩니다. 관련된 모든 도시를 가져옵니다. 장소와 도시의 수에 따라 잘 확장됩니다.
예상 출력:
[{1 Place1 {1 Town1} 1} {2 Place2 {1 Town1} 1}]
위 내용은 GORM의 Place-Town 관계에서 관련 데이터를 효율적으로 가져오는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!