2017-09-21 28 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はクエリ言語ではなくMVCフレームワークなので、 'Laravel'には実際にはクエリを翻訳しません。つまり、Laravelでは、必要に応じて生のSQLを使用してクエリを実行できます。

+0

OPはそれをEloquentに変換することを意味していたと思います.Laravel ORM(FWIWは何の試みもしないと思いますが、問題は話題にはなりません)。 – halfer

関連する問題