这是我使用流畅查询构建器的查询。
$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 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的流畅查询构建器进行此选择?我知道我可以使用原始的SQL查询但我想尽可能避免这种情况。任何帮助将不胜感激,提前谢谢!
答案 0 :(得分:90)
您可以在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();
答案 1 :(得分:30)
$count = DB::table('category_issue')->count();
会给你一些项目。
有关详细信息,请查看beautiful Laravel Documentation中的 Fluent Query Builder 部分。