https://my.oschina.net/lockupme/blog?sort=time&catalog=3591234&p=1&temp=1489111506889
这里有个框架写博客的教程,我就根据这个来一点一点学习。
记录下发现的问题
1、
cond.And 问题
其中一段在MODEL里写的查询数据库部分
func ListArticle(condArr map[string]string, page int, offset int) (num int64, err error, art []Article) { o := orm.NewOrm() qs := o.QueryTable("article") cond := orm.NewCondition() if condArr["title"] != "" { cond = cond.And("title__icontains", condArr["title"]) } if condArr["keywords"] != "" { cond = cond.Or("keywords__icontains", condArr["keywords"]) } if condArr["status"] != "" { //status, _ := strconv.Atoi(condArr["status"]) cond = cond.And("status", condArr["status"]) }其中不太明白,为什么有的是
cond.And("title__icontains", condArr["title"])
而有的是这样
cond.And("status", condArr["status"])然后我把__icontains
这个删除了在服务器端看到的查询语句是
[SELECT T0.`id`, T0.`title`, T0.`uri`, T0.`keywords`, T0.`summary`, T0.`content`, T0.`author`, T0.`created`, T0.`viewnum`, T0.`status` FROM `article` T0 WHERE T0.`title` = ? LIMIT 10] - `吗`
而没有删除的时候,看到的是
[SELECT T0.`id`, T0.`title`, T0.`uri`, T0.`keywords`, T0.`summary`, T0.`content`, T0.`author`, T0.`created`, T0.`viewnum`, T0.`status` FROM `article` T0 WHERE T0.`title` LIKE ? LIMIT 10] - `%吗%`
哈哈,这下明白了,如果是"title__icontains"
得到的查询语句中条件的判断是 like,如果是
"title"
得到的查询条件就是 =2、查询的controllers部分,关键的3句
countArticle := CountArticle(condArr) paginator := pagination.SetPaginator(this.Ctx, offset, countArticle) _, _, art := ListArticle(condArr, page, offset)其中condArr是查询条件,this.Ctx 对这个内容进行分页
offset 每页的数据条目数,例子里是从配置文件中读取的
countArticle 要显示的条目总数