可以使用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来查询所有文章的评论数,并按文章创建时间降序排序,取出最新的文章列表。
  • 最后将查询结果传递给模板进行渲染。

注意,这里使用了别名ac来区分文章表和评论表,其中a.*c.*表示查询所有字段,而count(c.id) as comment_count表示查询评论数并将其命名为comment_count

php 现在有两张表分别是文章表、评论表其中评论表使用aid关联了文章表的id我想获得评论最多的文章并生成列表。用thinkphp50的写法

原文地址: https://www.cveoy.top/t/topic/bZsC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录