如何将SQL转换为Laravel 5.2 Query Builder

时间:2016-12-07 20:26:33

标签: eloquent laravel-5.2 laravel-query-builder

您好我是Laravel的新手,并且在将以下MYSQL查询转换为Laravel查询生成器时遇到了很大问题。我正在使用Laravel 5.2。

这是有效的MYSQL查询:

select * from
(select b.id, SUM(v.value) as total
from blog_entries as b
ON v.votable_id = b.id AND v.votable_type = 'App\\BlogEntry'
LEFT JOIN votes as v
GROUP BY b.id
ORDER BY total desc)
AS Data where Data.total > 0;

是否可以利用Eloquent执行此查询? 我读过Laravels Query Builder Documentation并且它已经超越了我的脑海。任何帮助或指示将不胜感激。

感谢您的时间和帮助!

1 个答案:

答案 0 :(得分:0)

我找到了将SQL转换为Laravel Query Builder形式的解决方案:

使用Laravel的查询生成器:

DB::table('blog_entries')
  ->select('blog_entries.id', DB::raw('SUM(votes.value) as total'))
  ->leftjoin('votes', function ($join) {
          $join->on('votes.votable_id', '=', 'blog_entries.id')
               ->where('votes.votable_type', '=', 'App\BlogEntry');
  })
  ->groupBy('blog_entries.id')
  ->having('total', '>', 0)
  ->orderBy('total', 'DESC')
  ->get();