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

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

Susan Sarandon
Susan Sarandonoriginal
2024-11-04 11:00:01991parcourir

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

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

Lorsqu'il s'agit de modèles de base de données, il est souvent nécessaire de stocker des tableaux de valeurs . Dans Gorm, l'ORM officiel pour Go, enregistrer un tableau d'entiers en tant que champ unique dans PostgreSQL peut être un défi.

Pour résoudre ce problème, Gorm prend en charge la gestion des tableaux en utilisant des types personnalisés de la bibliothèque sous-jacente. . En tirant parti de la bibliothèque pq, vous pouvez définir un type de tableau dans votre modèle.

Par exemple, considérons le modèle Gorm mis à jour suivant :

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

Ici, DeckType est défini comme pq.Int64Array , qui représente un tableau d'entiers. La balise gorm:"type:integer[]" spécifie le type PostgreSQL sous forme d'un tableau d'entiers.

Pour insérer un enregistrement avec un tableau d'entiers, affectez simplement le tableau au champ DeckType :

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

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

En utilisant les types personnalisés de pq, vous pouvez enregistrer et récupérer de manière transparente des tableaux d'entiers en tant que champ unique dans votre modèle Gorm.

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