Maison > développement back-end > Golang > le corps du texte

Comment stocker un tableau d'entiers en tant que type de données de modèle Gorm dans PostgresQL ?

Linda Hamilton
Libérer: 2024-11-09 08:05:02
original
195 Les gens l'ont consulté

How to Store an Array of Integers as a Gorm Model Data Type in PostgresQL?

Intégration d'un tableau d'entiers en tant que type de données de modèle Gorm

Le problème

Les utilisateurs de Gorm sont confrontés à un obstacle lorsqu'ils tentent de stocker un tableau d'entiers dans un champ unique d'une base de données PostgresQL utilisant le framework. Le message d'erreur « panique : type SQL invalide (slice) pour postgres » apparaît en raison de la non-concordance par défaut entre le type de données slice de Gorm et la prise en charge native des tableaux de PostgresQL.

La résolution

À résoudre Pour résoudre efficacement ce problème, il est nécessaire d'utiliser des types personnalisés fournis par la bibliothèque de base de données sous-jacente. Dans ce cas, le package pq propose le type pq.Int64Array, qui prend en charge nativement les tableaux PostgresQL. Le code suivant illustre l'utilisation appropriée :

<code class="go">type Game struct {
    gorm.Model
    GameCode    string
    GameName    string
    DeckType    pq.Int64Array `gorm:"type:integer[]"`
    GameEndDate string
}</code>
Copier après la connexion

Où Game.DeckType spécifie le type à l'aide de la balise gorm:"type:integer[]", le définissant effectivement comme un tableau d'entiers dans la base de données PostgresQL.

Exemple d'insertion

Après avoir établi le type personnalisé, vous pouvez facilement insérer un tableau de entiers dans la base de données :

<code class="go">dt := []int64{1, 2, 3}

db.Create(&Game{GameCode: "xxx", GameName: "xxx", DeckType: pq.Int64Array(dt), GameEndDate: "xxx"})</code>
Copier après la connexion

Ce code crée un nouvel enregistrement dans la table Game, où DeckType est stocké sous forme de tableau d'entiers.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal