首页  >  文章  >  后端开发  >  如何在 PostgresQL 中将整数数组存储为 Gorm 模型数据类型?

如何在 PostgresQL 中将整数数组存储为 Gorm 模型数据类型?

Linda Hamilton
Linda Hamilton原创
2024-11-09 08:05:02206浏览

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

将整数数组集成为 Gorm 模型数据类型

问题

Gorm 用户在尝试将整数数组存储在使用该框架的 PostgresQL 数据库的单个字段。错误消息“panic: invalid sql type (slice) for postgres”是由于 Gorm 的切片数据类型和 PostgresQL 的本机数组支持之间默认不匹配而出现的。

解决方案

解决要有效地解决这个问题,就需要采用底层数据库库提供的自定义类型。在这种情况下,pq 包提供了 pq.Int64Array 类型,它本身支持 PostgresQL 数组。以下代码举例说明了正确的用法:

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

其中 Game.DeckType 使用 gorm:"type:integer[]" 标记指定类型,有效地将其定义为 PostgresQL 数据库中的整数数组。

插入示例

建立自定义类型后,您可以轻松地将整数数组插入到数据库:

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

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

此代码在 Game 表中创建一条新记录,其中 DeckType 存储为整数数组。

以上是如何在 PostgresQL 中将整数数组存储为 Gorm 模型数据类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn