使用 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中文网其他相关文章!