将SQL查询转换为Laravel

时间:2017-09-21 20:14:15

标签: php mysql sql laravel

我对Laravel相当新,尝试使用许多指南和类似的Stack Overflow线程,但没有任何运气。

是否有人帮我将此查询重写为Laravel:

SELECT a.id, a.hits, a.url, a.sold, a.total, a.updated_at,
        GROUP_CONCAT(b.TransID) as SONumber,
        COUNT(SONumber) AS newHits
FROM    hits AS a
        INNER JOIN transactions AS b
            ON FIND_IN_SET(b.TransID, a.SONumber) > 0
WHERE   b.TransDate >= '$fromdate' || b.TransDate >= '$todate'
GROUP BY a.id

这完美无缺,但我不知道如何在Laravel中重写它。

表没有规范化,我必须编写这样的查询才能正常工作,因为我无法更改给定的表。

1 个答案:

答案 0 :(得分:0)

你应该可以这样做:

$query = "SELECT a.id, a.hits, a.url, a.sold, a.total, a.updated_at, GROUP_CONCAT(b.TransID) as SONumber, COUNT(SONumber) AS newHits FROM hits AS a INNER JOIN transactions AS b ON FIND_IN_SET(b.TransID, a.SONumber) > 0 WHERE   b.TransDate >= " . $fromdate . " || b.TransDate >= " . "$todate" .  "GROUP BY a.id";
$results = DB::select($query);

不确定您是否有一个名为ab的表,或者这些只是占位符。如果没有,您可能需要插入正确的表名。

你不会真正将查询'翻译成Laravel',因为Laravel是一个MVC框架,而不是一种查询语言。也就是说,Laravel允许您在需要时使用原始SQL执行查询。