php - 通过事件记录或查询获取拥有最多文章的用户及其数量

标签 php mysql sql activerecord yii2

我想获取撰写最多文章的用户。我使用 ActiveRecord 以两种方式做得很好,如下所示:

$table = Articles::find()
        ->select('articles.*, COUNT(*) AS cnt')
        ->with('user','userDetails')
        ->groupBy('articles.user_id')
        ->orderBy(('cnt DESC'))
        ->limit(10)
        ->offset($offset)
        ->all();

并使用如下查询:

$query = (new Query())
        ->select('articles.user_id, COUNT(*) AS num_articles')
        ->from('articles')
        ->join('LEFT JOIN', 'user_details', 'user_details.user_id = articles.user_id')
        ->groupBy('articles.user_id')
        ->orderBy('num_articles DESC')
        ->limit(10)
        ->offset($offset)
        ->all();
  1. 问题是 ActiveRecord 为我提供了更多所需信息 userDetails我需要的。但我没有得到应该在 cnt 上的用户文章数量
  2. 通过查询,我得到 user_id以及文章数量。但我没有通过加入 userDetails 来让它工作。 。所有这些都不起作用:LEFT JOIN , RIGHT JOIN , INNER JOIN .

我有兴趣解决这两个问题以供学习,但具体而言,我需要解决 ActiveRecord 问题的帮助。

最佳答案

好吧,我为 ActiveRecord 解决了这个问题。 ActiveRecords 需要模型中的 public $var; 。因此,要获得金额,您必须将提到的 public... 添加到您的模型中,以便在我的情况下:

public $cnt; 扩展了Articles的ActiveRecord

现在我可以通过我的问题中给定的请求访问它。但这只是解决了第一点。我仍然对第二种更复杂查询的方式感兴趣。

关于php - 通过事件记录或查询获取拥有最多文章的用户及其数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29701450/

相关文章:

php - codeigniter 根据位置和日期查看每个月的数据

php - 无法使用 PHP 和 PDO 更新表

php - PDO 查询未返回预期结果

php - 将 Json 字符串放入 html 标签的最佳方法是什么?

java - 嵌套 n :m + attributes JPA

mysql - sql : how to convert values in row to a variable with a prefix and suffix

php - 如何在 codeigniter 日历的每个单元格中插入复选框

mysql - SQL 语句中的方括号 us 用于通配符

c# - 从html文件导入数据到sql数据库

mysql - 选择时间戳间隔内的多个值