구조체 내의 구조체: SQLX의 고급 스캔 가이드
SQLX를 사용하는 동안 데이터를 중첩된 구조체로 스캔하는 데 문제가 발생할 수 있습니다. 다음 예를 고려해 보겠습니다.
type Customer struct { Id int `json:"id" db:"id"` Name string `json:"name" db:"name"` Address Address `json:"adress"` // Oops, missing embedded property } type Address struct { Street string `json:"street" db:"street"` City string `json:"city" db:"city"` }
이 정의를 사용하여 데이터를 스캔하려고 하면 다음 오류가 발생합니다.
missing destination name street in *models.Customer
해결책: Embrace Embedded Structs
이 문제를 해결하는 열쇠는 SQLX의 심층 스캔 기능을 이해하는 데 있습니다. 문서에서 알 수 있듯이 구조체 삽입을 지원하고 해당 필드를 상위 구조체로 승격시킵니다. 이를 달성하려면 간단히 Customer:
type Customer struct { Id int `json:"id" db:"id"` Name string `json:"name" db:"name"` Address Address }
주소 필드의 자체 db 태그를 제거했습니다. 이는 더 이상 별도의 엔터티가 아니기 때문입니다.
주의: 평면화 JSON 출력
그러나 Address를 포함하면 다음과 같이 Customer 구조체의 JSON 출력이 평면화됩니다. Name과 City는 이제 모두 직접적인 속성입니다.
{ "id": 1, "name": "foo", "street": "bar", "city": "baz" }
가능한 대안
이것이 바람직하지 않은 경우 다음과 같은 몇 가지 대체 접근 방식이 있습니다.
위 내용은 SQLX를 사용하여 중첩된 구조체를 효과적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!