Structs dans les structures : guide de l'analyse avancée de SQLX
Lors de l'utilisation de SQLX, vous pourriez rencontrer des difficultés à analyser les données dans des structures imbriquées. Considérons cet exemple :
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"` }
Lorsque vous tentez d'analyser des données à l'aide de cette définition, vous rencontrerez cette erreur :
missing destination name street in *models.Customer
Solution : adopter les structures intégrées
La clé pour résoudre ce problème réside dans la compréhension des capacités d'analyse approfondie de SQLX. Comme le suggère la documentation, il prend en charge l'intégration de structures, en promouvant leurs champs dans la structure parent. Pour y parvenir, intégrez simplement Adresse dans Client :
type Customer struct { Id int `json:"id" db:"id"` Name string `json:"name" db:"name"` Address Address }
Notez que nous avons supprimé la propre balise db du champ Adresse, car il ne s'agit plus d'une entité distincte.
Attention : Aplatir la sortie JSON
Cependant, l'intégration de l'adresse aplatit la sortie JSON de la structure Customer, car le nom et la ville sont désormais des propriétés directes :
{ "id": 1, "name": "foo", "street": "bar", "city": "baz" }
Alternatives possibles
Si cela n'est pas souhaité, il existe plusieurs approches alternatives :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!