如何在gorm(GoLang)中建立归属关系
这是我的结构如何在gorm(GoLang)中建立归属关系,go,go-gorm,belongs-to,Go,Go Gorm,Belongs To,这是我的结构 type Book struct { ID uint `json:"id" gorm:"primary_key"` Yearmonth string `json:"yearmonth"` Realname string `json:"real_name"` LanguageId int Language Language }
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解析语言id
。
用于获取路径中的参数。例:
router.GET("/user/:id", func(c *gin.Context) {
// a GET request to /user/john
id := c.Param("id") // id == "john"
})
但您不能指定任何路径参数。您正在URL中将language\u id
作为查询参数传递。因此,要获取querystring参数,您需要使用。例:
因此,使用c.Query(“language\u id”)
而不是c.Param(“language\u id”)
你能告诉我你试图调用API的路由代码和URL吗?
r.GET(“/getBooks”,controllers.getBooks)
http://localhost:8080/getBooks?language_id=1
我是这样通过的我得到的是空数据谢谢,它正在工作。但在书籍响应中获取语言的空对象。如何获得语言对象和书籍对象?i、 e.```数据:[{“id”:1,“yearmonth”:“2000_07”,“真实姓名”:“LanguageId”:1,“语言”:{“id”:0,“name”:“CreatedAt”:“0001-01-01T00:00:00Z”,“UpdatedAt”:“0001-01-01T00:00:00Z”},},```@deepu因为您已经获取了语言,您可以在每本书中设置,也可以预加载语言,如db.Where(“language\u id=?”,c.Query(“language\u id”)。预加载(“language”)。查找(&books)
细节对我很有用!非常感谢!我做到了。标记为正确答案。:)快速问题我想对多个请求使用一个结构,比如上面的结构/books
我不想显示关系语言
对象。但是对于/getBooks
请求,我想显示语言
对象。如何才能我做到了吗
GET /path?id=1234&name=Manu&value=
c.Query("id") == "1234"
c.Query("name") == "Manu"
c.Query("value") == ""
c.Query("wtf") == ""
db.Where("id=?", c.Query("language_id")).First(&language)
db.Where("language_id=?", c.Query("language_id")).Find(&books)