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