type ArticleInfo struct {
ID int64 `db:"id"`
CategoryID int `db:"category_id"`
Summary string `db:"summary"`
Title string `db:"title"`
ViewCount int64 `db:"view_count"`
CommentCount int64 `db:"comment_count"`
CreateTime time.Time `db:"create_time"`
UpdateTime time.Time `db:"update_time"`
UserName string `db:"username"`
}
type ArticleDetail struct {
Content string `db:"content"`
ArticleRecord
}
type ArticleRecord struct {
ArticleInfo
Category
}
type Category struct {
CategoryID int `db:"id"`
CategoryName string `db:"category_name"`
CategoryNo int `db:"category_no"`
}
var articleDetail = new(ArticleDetail)
sqlstr := `
select id,category_id,content,title,view_count,comment_count,username,summary,create_time
from article
where id=? and status=1`
err = DB.Get(ariticleDetail,sqlstr,4)
由于Category和ArticleInfo模型的ID映射到数据库都是id,所以在读取数据库时,id无法匹配到结构体对象字段,导致结构体其他字段有值,而Articleinfo中的ID和Category中的category_id都是0
解决方案
在写数据读取的sql语句时,在有歧义的字段里用上别名,并且将该结构体的字段tag改为db:"别名"
网友评论