去GORM Many2many 加入

问题描述 投票:0回答:1

我对 GORM 的映射有疑问。当我尝试访问组中的用户时,它为我创建了一个奇怪的查询。它不知道第三个表。但这是数据库的图像:

在解决问题之前,这是我的 2 模型:

type User struct {
    ID   uint   `gorm:"primaryKey"`
    Name string
    // etc...
}

type Group struct {
    ID               uint       `gorm:"primaryKey"`
    IsPrivateMessage bool
    Users            []*User    `gorm:"constraint:OnDelete:CASCADE;many2many:group_user"`
}

所以当我运行这个查询时:

err := database.DB.Model(models.Group{}).
Joins("Users").
Where("groups.id = ? and Users.id = ?", groupID, u.ID).
Limit(1).
Count(&count).Error

GORM 为我创建了这个 SQL:

SELECT count(*) FROM `groups` LEFT JOIN `users` `Users` ON `groups`.`id` = `Users`.`group_id` AND `groups`.`user_id` = `Users`.`id` WHERE groups.id = '1' and Users.id = 1 LIMIT

我什至尝试在加入用户之前添加此内容:

Joins("group_user")
,但它添加了 group_user 作为查询中组的别名。这个问题有什么解决办法吗?我真的什么也没发现。这就是现在的痛苦。

go grails-orm go-gorm
1个回答
0
投票

您能再描述一下您的问题吗?首先,您的 Groups ManyToMany 与用户的关联如何? 根据您的模型,我猜测一个组可以有多个用户。所以应该是一对多吧?

© www.soinside.com 2019 - 2024. All rights reserved.