使用 sqlx 掃描巢狀結構
使用 sqlx 時,巢狀結構帶來了挑戰。不過,文件透過使用嵌入式結構提供了一種解決方案。
嵌入式結構
Sqlx 支援嵌入式結構,讓您可以使用 Go 的優先權規則為欄位賦值用於嵌入屬性和方法。
程式碼範例
考慮以下程式碼,其中Address 不是嵌入結構:
type Customer struct { Id int `json:"id" db:"id"` Name string `json:"name" db:"name"` Address Address `json:"adress"` } type Address struct { Street string `json:"street" db:"street"` City string `json:"city" db:"city"` }
嘗試掃描到Customer 結構時,此程式碼會導致錯誤,因為Address欄位未嵌入,並且沒有自己的db 標籤。
要解決此問題,請將位址嵌入到Customer:
type Customer struct { Id int `json:"id" db:"id"` Name string `json:"name" db:"name"` Address }
透過嵌入Address,其欄位(包括標籤)被提升為Customer,允許sqlx 從查詢結果中填入它們。
JSON 輸出
嵌入位址將使JSON 輸出變平,如圖所示如下:
{ "id": 1, "name": "foo", "street": "bar", "city": "baz" }
要解決此問題,您可以將資料庫結構重新對應到原始類型或將查詢結果掃描到映射中。
以上是如何使用sqlx高效掃描嵌套結構?的詳細內容。更多資訊請關注PHP中文網其他相關文章!