Maison >développement back-end >Golang >Comment analyser efficacement les résultats des requêtes GORM dans des structures : un guide pour résoudre les problèmes de mappage

Comment analyser efficacement les résultats des requêtes GORM dans des structures : un guide pour résoudre les problèmes de mappage

Barbara Streisand
Barbara Streisandoriginal
2024-10-27 05:25:29656parcourir

How to Effectively Scan GORM Query Results into Structs: A Guide to Resolving Mapping Issues

Analyse des résultats de requête GORM dans des structures

Lors de l'interrogation de données à l'aide de GORM, vous pouvez rencontrer des problèmes lors de l'analyse des résultats dans une structure de données personnalisée. Cet article explique comment résoudre efficacement ces problèmes.

Exemple de code et description du problème

Considérez le code suivant qui récupère les données de deux tables, utilisateurs et cartes_de_crédit, à l'aide d'une jointure gauche :

<code class="go">type res struct {
    id       int
    number   int
    user_id int
}

func getDataJoin() {
    new := []res{}
    db.Db.Table("users").Select("users.id as id, credit_cards.number as number, credit_cards.user_id as user_id").Joins("left join credit_cards on credit_cards.user_id = users.id").Scan(&new)
    fmt.Println("user\n", new)
}</code>

Cette requête génère le résultat suivant :

[
  {0 0 0},
  {0 0 0},
  {0 0 0},
  {0 0 0},
  {0 0 0},
  {0 0 0}
]

Malgré l'obtention du résultat de requête correct dans la base de données, le nouveau tableau est constitué uniquement de valeurs par défaut.

Solution : Conventions de dénomination des champs et mappage

Pour résoudre ce problème, assurez-vous que les noms de champs dans la structure res s'alignent avec les noms de colonnes de la base de données. Par défaut, GORM s'attend à ce que les noms de champs correspondent exactement aux noms de colonnes. Alternativement, vous pouvez spécifier des mappages explicites entre les colonnes et les champs à l'aide de la balise gorm :

<code class="go">// Solution 1: Public Fields

type Res struct {
    ID       int
    Number   int
    UserID   int
}

// Solution 2: Explicit Mapping

type res struct {
    id       int      `gorm:"column:id"`
    number   int      `gorm:"column:number"`
    user_id  int      `gorm:"column:user_id"`
}</code>

En appliquant ces solutions, GORM peut analyser correctement les résultats de la requête dans le nouveau tableau.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn