为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 m:n 关系映射到切片字段?

如何将 m:n 关系映射到切片字段?

Go
守着一只汪 2021-08-16 15:14:48
我有一个结构Person:type Person struct {    Id     int64    Name   string    Colors []string}它应该从person表中获取其数据:id | name---------1  | Joe2  | Moe和一张person_color桌子:person_id | color-----------------1         | black1         | blue2         | green通过SELECT p.id, p.name, pc.color FROM person AS p INNER JOIN person_color AS pc ON pc.person_id = p.id我将两个表合并到:id | name | color-----------------1  | Joe  | black1  | Joe  | blue2  | Moe  | green目前我唯一能想到的就是在迭代时手动映射颜色rows.Next()(注意:只是虚拟代码):ps := make([]People, 0)rows, err := db.Query("SELECT ...")for rows.Next() {    var p Person    err := rows.Scan(&p.Id, &p.Name, &p.Color[0])    exists := false    for _, ps := range ps {        if ps.Id == p {            exists = true            ps.Color = append(ps.Color, p.Color)        }    }    if !exists {        ps = append(ps, p)    }}尽管这可行,但这很烦人,因为映射到切片字段是一种常见操作。有什么方法可以使用sql或sqlx在所有切片字段上使上述通用?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 180 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信