मेरे पास अनुयायियों की उपयोगकर्ता संरचना में कई 2 कई तालिकाएँ हैं। जहाँ 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"`
}

और फॉलो यूज़र फ़ंक्शन भी हैं जो उपयोगकर्ता आईडी को ऑथ टोकन से प्राप्त करते हैं और अनुरोध से अन्य उपयोगकर्ता आईडी प्राप्त करते हैं। और यह जांचने की आवश्यकता है कि उपयोगकर्ता पहले से चयनित उपयोगकर्ता का पालन नहीं करता है या नहीं। मैं इसमें कैसे सहयोग कर सकता हूं? इस तरह मैंने कोशिश की।

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)

इसके बाद प्रीलोड स्टेटमेंट मुझे टेबल में सभी ऑब्जेक्ट प्राप्त होते हैं। उपयोगकर्ता_आईडी =? और अनुयायी_आईडी =? काम नहीं करता। पी.एस. मैं मारिया डीबी का उपयोग करता हूं

0
Justas Glodenis 17 नवम्बर 2020, 19:13

1 उत्तर

सबसे बढ़िया उत्तर

शायद सबसे अच्छा समाधान नहीं है, लेकिन इससे मुझे मदद मिली:

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)
0
Justas Glodenis 18 नवम्बर 2020, 16:51