有如下三个 struct
type Article struct {
gorm.Model
CategoryID int `json:"-" gorm:"not null"`
Category Category `json:"category" gorm:"ForeignKey:CategoryID;`
Title string `json:"title" gorm:"not null;type:varchar(100);"`
AuthorID int `json:"-"`
Author Author `gorm:"ForeignKey:AuthorID"`
Content string `json:"content" gorm:"not null;type:text"`
}
type Category struct {
ID uint `json:"id" gorm:"primary_key;AUTO_INCREMENT"`
Name string `json:"name" gorm:"type:varchar(100)"`
Max int `json:"max"`
}
type Author struct {
gorm.Model
Name string `json:"name"`
}
想实现如下的 SQL 应该如何写呢?
SELECT a.id,a.title,b.name as category,c.name as author FROM article a, category b, author c WHERE a.category_id=b.id AND a. author_id = c.id AND a.category_id =1
// 这样是查询出了三张表的所有字段,Select 好像只支持当前表的字段
// list := []Article{}
// mysql.Preload("Author").Preload("Category").Find(&list, "category_id=?", 1)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.