go gorm mysql“不支持的类型[]字符串,一段字符串”

kqlmhetl  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(859)

我使用gorm,并尝试创建到mysql的事务。我有一个结构

type Game struct {
    Images []string
}

game := Game{Images: []string{"1.png", "2.png"}}

db := Database()

tx := db.Begin()

if err := tx.Create(&game).Error; err != nil {
    tx.Rollback()
    return errors.New("Cannot add game")
}

tx.Commit()

但我犯了个错误 (sql: converting argument $1 type: unsupported type []string, a slice of string) . 我明白,mysql不支持这种类型,但是我能用某种方法解决这个问题吗?我想我可以把字体改成 json.rawMessage ,但我认为这是一个错误的方式。
我用方言 "github.com/jinzhu/gorm/dialects/mysql"

i7uq4tfw

i7uq4tfw1#

如果你想在mysql中列出一些东西,你有两个选择
您可以自己序列化列表(使用逗号分隔的字符串、json或其他序列化格式),并将其存储在字符串或字节列中。
可以使用join将这两个表关联起来。
gorm通过称为关联的东西来支持连接。在这种情况下,你有很多联系(http://doc.gorm.io/associations.html#has-许多)。
您可以这样做的一个例子是:

type Game struct {
    gorm.Model
    GameImages   []GameImage
}

type GameImage struct {
    gorm.Model
    Name string
}

db.Model(&game).Related(&gameImages)

相关问题