如何解决如何在gormGoLang中创建BelongTo关系
这是我的结构
type Book struct {
ID uint `json:"id" gorm:"primary_key"`
Yearmonth string `json:"yearmonth"`
Realname string `json:"real_name"`
LanguageId int
Language Language
}
这是我的控制器逻辑
func GetBooks(c *gin.Context) {
db := c.MustGet("db").(*gorm.DB)
var language []models.Language
if err := db.Where("id=?",c.Param("language_id")).First(&language).Error;
err != nil {
c.JSON(http.StatusBadRequest,gin.H{"data": "No Records Found"})
return
}
var books []models.Book
if errBooks := db.Where("language_id=?",c.Param("language_id")).Find(&books).Error;
errBooks != nil {
c.JSON(http.StatusBadRequest,gin.H{"data": "No Books Found"})
return
}
c.JSON(http.StatusOK,gin.H{"data": books})
}
我以几种方式尝试过,结果得到空数据。任何有帮助的建议或帮助。 TIA
解决方法
问题是未从URL解析language_id
。
.Param()用于获取路径中的参数。例如:
router.GET("/user/:id",func(c *gin.Context) {
// a GET request to /user/john
id := c.Param("id") // id == "john"
})
但是您没有指定任何路径参数。您正在传递language_id
作为URL中的查询参数。因此,要获取querystring参数,您需要使用.Query()。例如:
GET /path?id=1234&name=Manu&value=
c.Query("id") == "1234"
c.Query("name") == "Manu"
c.Query("value") == ""
c.Query("wtf") == ""
因此,使用c.Query("language_id")
代替c.Param("language_id")
db.Where("id=?",c.Query("language_id")).First(&language)
db.Where("language_id=?",c.Query("language_id")).Find(&books)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。