php 现在有两张表分别是文章表、评论表其中评论表使用aid关联了文章表的id我想获得评论最多的文章并生成列表。用thinkphp50的写法
可以使用ThinkPHP5.0的查询构造器来实现,具体代码如下:
// 获取评论最多的文章
$article = db('article')
->alias('a')
->join('comment c', 'a.id = c.aid')
->field('a.*, count(c.id) as comment_count')
->group('a.id')
->order('comment_count desc')
->find();
// 获取文章列表
$articleList = db('article')
->alias('a')
->join('comment c', 'a.id = c.aid', 'left')
->field('a.*, count(c.id) as comment_count')
->group('a.id')
->order('a.create_time desc')
->select();
// 渲染模板
$this->assign('article', $article);
$this->assign('articleList', $articleList);
return $this->fetch();
解释一下代码:
- 第一段代码使用了SQL的
count()函数来统计每篇文章的评论数,并按评论数降序排序,取出评论最多的文章。 - 第二段代码和第一段类似,不同之处在于这里使用了
left join来查询所有文章的评论数,并按文章创建时间降序排序,取出最新的文章列表。 - 最后将查询结果传递给模板进行渲染。
注意,这里使用了别名a和c来区分文章表和评论表,其中a.*和c.*表示查询所有字段,而count(c.id) as comment_count表示查询评论数并将其命名为comment_count。
原文地址: https://www.cveoy.top/t/topic/bZsC 著作权归作者所有。请勿转载和采集!