2017-09-21 4 views
-1

저는 Laravel에 상당히 익숙하며 많은 가이드와 유사한 스택 오버 플로우 스레드를 사용했지만 행운이 없었습니다.SQL 쿼리를 Laravel로 변환

누구든지 나를 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

[더 빠른 답변을 얻기 위해 어떤 상황에서 "긴급한"또는 다른 유사한 문구를 추가 할 수 있습니까?] (// meta.stackoverflow.com/q/326569) - 요약하면 자원 봉사자를 대처하는 이상적인 방법이 아니며, 아마도 답을 얻는 데 비생산적입니다. 이 질문을 귀하의 질문에 추가하지 마십시오. – halfer

답변

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'로 쿼리를 변환하지 않아도됩니다. 즉, Laravel을 사용하면 필요할 때 원시 SQL로 쿼리를 실행할 수 있습니다.

+0

나는 OP가 그것을 Eloquent, Laravel ORM (FWIW는 어떤 시도도하지 않고 생각할 수있다.)에 변환하는 것을 의미한다고 생각한다. – halfer