如何从gorm中的多个表中获取对象

如何从gorm中的多个表中获取对象,go,orm,mariadb,go-gorm,mariasql,Go,Orm,Mariadb,Go Gorm,Mariasql,我在用户Followers结构中有许多自引用表。其中user_id和follower_id是外键 type User struct { ID uint `gorm:"primary_key"` Name string `gorm:"size:20"` LastName string `gorm:"size:40"` Follow []User `gorm:"many2many

我在用户Followers结构中有许多自引用表。其中user_id和follower_id是外键

type User struct {
  ID uint `gorm:"primary_key"`
  Name        string     `gorm:"size:20"`
  LastName    string     `gorm:"size:40"`
  Follow []User `gorm:"many2many:Follow;association_jointable_foreignkey:follower_id"`
}
还有FollowUser函数,它可以从auth令牌中获取用户id,并从请求中获取其他用户id。它需要检查用户是否已经跟随所选用户。我怎么能成为同谋呢? 这就是我尝试的方式

var CheckUser User
db.Preload("Follow", "user_id = ? AND follower_id = ?", selectedUser.ID, user.ID).Find(&CheckUser)
if CheckUser.ID != 0 {
    w.WriteHeader(http.StatusAlreadyReported)
    JSONResponse(struct{}{}, w)
    return
}

//Add user to followings
db.Model(&selectedUser).Association("Follow").Append(&user)
db.Model(&selectedUser).Updates(User{Followers: selectedUser.Followers + 1})
db.Model(&user).Updates(User{Following: user.Following + 1})

w.WriteHeader(http.StatusOK)
在这个预加载语句之后,我接收表中的所有对象。用户_id=?而follower_id=?不起作用。
注意:我使用mariaDB可能不是最好的解决方案,但这有助于我:

db.Raw("select * from users where id = (Select user_id from Follow where follower_id = ? and user_id = ? LIMIT 1) LIMIT 1", usrID, selectedUser.ID).Scan(&CheckUser)

“不工作”--是否有任何错误消息?其他线索?它只返回*下表中的最后一个用户。如果我将CheckUser设置为array,那么它将返回所有结果(不按用户id和跟随者id对其进行过滤)。如果没有
ORDER by
LIMIT
会选择随机行。