下面是我使用fluent query builder进行的查询.

    $query = DB::table('category_issue')
        ->select('issues.*')
        ->where('category_id', '=', 1)
        ->join('issues', 'category_issue.issue_id', '=', 'issues.id')
        ->left_join('issue_subscriptions', 'issues.id', '=', 'issue_subscriptions.issue_id')
        ->group_by('issues.id')
        ->order_by(DB::raw('COUNT(issue_subscriptions.issue_id)'), 'desc')
        ->get();

正如你所看到的,我是按联接表中的计数排序的.这很好用.但是,我希望将此计数与我的 Select 一起返回.

我的原始查询很好.

Select issues.*, COUNT(issue_subscriptions.issue_id) AS followers 
FROM category_issue JOIN Issues ON category_issue.issue_id = issues.id 
LEFT JOIN issue_subscriptions ON issues.id = issue_subscriptions.issue_id
WHERE category_issue.category_id = 1
GROUP BY issues.id
ORDER BY followers DESC

我将如何使用Laravel的fluent query builder进行此 Select ?我知道我可以使用原始sql查询,但如果可能的话,我希望避免这种情况.任何帮助都将不胜感激,提前感谢!

推荐答案

可以在select()中使用数组来定义更多列,也可以在那里使用DB::raw()将其别名化为followers.应该是这样的:

$query = DB::table('category_issue')
    ->select(array('issues.*', DB::raw('COUNT(issue_subscriptions.issue_id) as followers')))
    ->where('category_id', '=', 1)
    ->join('issues', 'category_issue.issue_id', '=', 'issues.id')
    ->left_join('issue_subscriptions', 'issues.id', '=', 'issue_subscriptions.issue_id')
    ->group_by('issues.id')
    ->order_by('followers', 'desc')
    ->get();

Mysql相关问答推荐

棱镜一对多关系在数据库中不可见,并且连接选项不起作用

MySQL 计数出现的百分比大于

如何在 SQL 中迭代所有名称和排名排列

如何进行查询以在两个不同的列中搜索两个不同的数据字符串?

使用 SELECT 时应锁定多少行 .. FOR UPDATE LIMIT 1

如何编写一个查询,计算表中每个日期的一个日期加上前 4 天的记录数?

如何使用sql查询在日期列中按值和最大值分组的表中添加列?

优化解析 5000 万行 MySQL 表的请求

按年份范围 SQL 查询分组

组平SQL查询结果

为什么这个 NOT NULL 到 NULL 迁移会触发大量 I/O 操作?

MySQL查询以获取日期范围内的租赁订单

我在查询中没有得到正确的结果

插入重复键查询以在每一行上进行自定义更新

MySQL:在 Select 语句中自动增加临时列

何时在 mysql 中使用 TEXT 而不是 VARCHAR

MySQL:按字段排序,将空单元格放在末尾

Sequelize Query 查找日期范围内的所有记录

将 Blob 转换为字节数组的最简单方法

使用 Docker 我收到错误:SQLSTATE[HY000] [2002] 没有这样的文件或目录