有如下三个 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)