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
DDDoriginal
2024-11-05 14:49:02247parcourir

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>

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>

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>

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!

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