我对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中重写它。
表没有规范化,我必须编写这样的查询才能正常工作,因为我无法更改给定的表。
答案 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);
不确定您是否有一个名为a
和b
的表,或者这些只是占位符。如果没有,您可能需要插入正确的表名。
你不会真正将查询'翻译成Laravel',因为Laravel是一个MVC框架,而不是一种查询语言。也就是说,Laravel允许您在需要时使用原始SQL执行查询。