Analyse de structures imbriquées avec SQLx
Dans le domaine des manipulations de bases de données, l'analyse de structures imbriquées dans des entités de base de données peut poser un défi. Considérons le scénario suivant :
Étant donné le modèle de base de données :
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"` }
L'énigme :
Tentative de remplissage la structure Customer utilisant le code suivant échoue avec une erreur indiquant que le champ de destination de la rue dans *models.Customer est manquant.
customer := models.Customer{} err := db.Get(&customer, `select * from users where>
La solution :
SQLx fournit une solution puissante pour analyser les structures imbriquées grâce à l'utilisation de structures intégrées. Au lieu de déclarer l'adresse en tant que champ avec des balises db individuelles, nous pouvons l'intégrer dans Customer :
type Customer struct { Id int `json:"id" db:"id"` Name string `json:"name" db:"name"` Address }
En intégrant la structure, les champs d'adresse sont promus dans Customer et reçoivent leurs balises db de leur parent. SQLx remplira ensuite ces champs directement à partir du résultat de la requête.
Remarque importante :
Bien que cette approche simplifie l'analyse, elle aplatit également la sortie JSON de la structure. Pour conserver la structure imbriquée d'origine, envisagez de remapper la structure de la base de données sur votre type de cible.
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!