您好我是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并且它已经超越了我的脑海。任何帮助或指示将不胜感激。
感谢您的时间和帮助!
答案 0 :(得分:0)
我找到了将SQL转换为Laravel Query Builder形式的解决方案:
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();