Maison  >  Article  >  développement back-end  >  Comment stocker un tableau d'entiers en tant que type de données de modèle Gorm dans PostgresQL ?

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

Linda Hamilton
Linda Hamiltonoriginal
2024-11-09 08:05:02187parcourir

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>

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>

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!

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