【发布时间】:2021-02-28 21:24:31
【问题描述】:
我在追随者的用户结构中有自引用many2many 表。其中 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)
在此预加载语句之后,我收到表中的所有对象。 user_id = ?和follower_id =?不起作用。 附言我用mariaDB
【问题讨论】:
-
"不工作" -- 你有任何错误信息吗?其他线索?
-
它只返回 *Follow 表中的最后一个用户。如果我将 CheckUser 设置为数组,那么它将返回所有结果(不按 user_id 和 follower_id 过滤它)。
标签: go orm mariadb go-gorm mariasql