gorm 在用 JOIN 时, 怎么不让其他的条件给加进来

2022-01-03 22:43:07 +08:00
 xpyusrs
tx := g.DB.Model(&list).Where("user_id = ?", "1")
tx = tx.Joins("inner join orders on orders.shop_id = ?", "123")
tx.Where("item_id = ?", "111")

如上面代码, tx.Joins 生成的连表, 我只想要我写的那个条件, gorm 还会把user_idtem_id也给加进去

1977 次点击
所在节点    Go 编程语言
7 条回复
iseki
2022-01-03 23:26:46 +08:00
你是不是配置了外键什么的在 model struct 上
xpyusrs
2022-01-04 00:18:33 +08:00
@iseki 外键我都没关闭的, 全靠引用来关联数据
iseki
2022-01-04 01:47:18 +08:00
@xpyusrs 唔,我眼花了,你明明自己写了俩条件进去,GORM 肯定有啊
yrj
2022-01-04 03:51:59 +08:00
你自己写了两个 where 啊?去掉不就好了吗??
ezioruan
2022-01-04 12:03:58 +08:00
直接写 raw sql 吧
ni9ht
2022-01-04 17:52:51 +08:00
user_id 和 tem_id 是主表的条件?那就在字段前面加上表名:XXTable.user_id ,还有最好是把那两个字段放在 join 后面。
tyrantZhao
2022-01-07 20:58:57 +08:00
把它变成 raw sql 看看做了什么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/825963

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX