如何使用Laravelstream利的查询生成器来select计数?
这是我的查询使用stream利的查询生成器。
$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();
正如你所看到的,我正在通过连接表的计数来sorting。 这工作正常。 但是,我希望这个计数返回与我的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
我将如何使用Laravelstream利的查询构build器来进行这个select? 我知道我可以使用原始的SQL查询,但我想避免,如果可能的话。 任何帮助将不胜感激,在此先感谢!
你可以在select()中使用一个数组来定义更多的列,并且你可以使用DB :: raw()将其别名给追随者。 应该是这样的:
$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();
$count = DB::table('category_issue')->count();
会给你的项目数量。
有关更详细的信息,请查看美丽的Laravel文档中的 Fluent Query Builder部分。