将MYSQL查询转换为雄辩的
如何将此查询转换为雄辩的语法将MYSQL查询转换为雄辩的,mysql,laravel,eloquent,Mysql,Laravel,Eloquent,如何将此查询转换为雄辩的语法 SELECT x.id, x.title, points, (points - 1)/POW(((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(x.created_at))/3600)+2, 1.5) as hasil FROM media x JOIN (SELECT m.id, (SUM(mp.up)-SUM(mp.down)) AS points
SELECT x.id, x.title, points, (points - 1)/POW(((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(x.created_at))/3600)+2, 1.5) as hasil
FROM media x
JOIN (SELECT m.id,
(SUM(mp.up)-SUM(mp.down)) AS points
FROM media m
JOIN media_points mp ON mp.media_id = m.id
GROUP BY m.id) y ON y.id = x.id
ORDER BY hasil DESC
LIMIT 100
最后我用raw找到了答案
Media::select(DB::raw('media.*, (points - 1)/POW(((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(media.created_at))/3600)+2, 1.5) as hasil'))
->join(DB::raw('(SELECT m.id, (SUM(mp.up)-SUM(mp.down)) AS points FROM media m JOIN media_points mp ON mp.media_id = m.id GROUP BY m.id) as T'), 'T.id', '=', 'media.id')
->orderBy('hasil','desc')
->take(100)
请理解,这里没有人为你做这项工作。详细说明你已经做了什么以及你的问题在哪里。请记住,并非每个SQL语句都可以转换为雄辩的语法。对于复杂的SQL语句,仍然需要使用原始SQL。感谢您使用原始SQL提供的建议。最后我找到了答案Media::selectDB::raw'Media.*,points-1/POWUNIX\u TIMESTAMPNOW-UNIX\u TIMESTAMPmedia.created_at/3600+2,1.5 as hasil'->joinDB::raw'SELECT m.id,summap.up-summap.down as points FROM Media m JOIN Media\u points mp ON mp.Media\u id=m.id GROUP BY m.id as T','T.id','T.id','Media.id'->orderBy'hasil',“描述”->take100