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中文网其他相关文章!