Maison > développement back-end > Golang > Comment stocker un tableau d'entiers dans un modèle Gorm à l'aide de PostgreSQL ?

Comment stocker un tableau d'entiers dans un modèle Gorm à l'aide de PostgreSQL ?

DDD
Libérer: 2024-11-05 14:49:02
original
240 Les gens l'ont consulté

How to Store an Array of Integers in a Gorm Model Using PostgreSQL?

Ajout d'un tableau d'entiers comme type de données dans un modèle Gorm

Introduction :
Quand vous travaillez avec PostgreSQL utilisant Gorm, l'ajout d'un tableau d'entiers comme type de données dans un modèle peut présenter des défis. Cet article aborde un problème courant rencontré lors de la tentative d'une telle opération.

Problème :
Les modèles Gorm rencontrent souvent une erreur lorsqu'ils tentent d'enregistrer un tableau de nombres dans un seul champ PostgreSQL. L'erreur se lit généralement comme suit : "panique : type SQL (slice) invalide pour postgres."

Dépannage :
Le problème provient de l'utilisation de la tranche comme type de données. La solution consiste à utiliser des types personnalisés de la bibliothèque de pilotes PostgreSQL sous-jacente.

Solution :
Dans le modèle fourni :

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

Remplacez DeckType []int64 par DeckType pq.Int64Array, où pq est importé en tant qu'import pq "github.com/lib/pq".

Balise GORM :
Pour mapper correctement le type personnalisé à la colonne de la base de données , ajoutez une balise gorm pour spécifier le type de colonne :

<code class="go">DeckType    pq.Int64Array `gorm:"type:integer[]"`</code>
Copier après la connexion

Cette balise indique que le champ DeckType doit être mappé à un tableau d'entiers PostgreSQL.

Exemple d'insertion :
Après avoir modifié le modèle et ajouté la balise GORM, vous pouvez insérer un tableau d'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

En utilisant le type personnalisé et la balise GORM, vous pouvez enregistrer avec succès un tableau de entiers dans un champ PostgreSQL.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal