2017-05-02 15 views
1

誰かがクエリBuider Laravel 5

に、 My Table

SELECT supplier, 
MAX(IF(item_name = 'Lemon', price, NULL)) AS Lemon, 
MAX(IF(item_name = 'Apple', price, NULL)) AS Apple, 
MAX(IF(item_name = 'Durian', price, NULL)) AS Durian, 
MAX(IF(item_name = 'Mango', price, NULL)) AS Mango 
FROM offer 
where status = 'open' 
GROUP BY supplier 

方法Laravel QueryBuilderにより、このクエリを使用するために、この私のデータベースSQLクエリを手伝ってくれるか?ありがとうございました...

答えて

0
$results = DB::table('offer')->select(DB::raw("supplier, 
    MAX(IF(item_name = 'Lemon', price, NULL)) AS Lemon, 
    MAX(IF(item_name = 'Apple', price, NULL)) AS Apple, 
    MAX(IF(item_name = 'Durian', price, NULL)) AS Durian, 
    MAX(IF(item_name = 'Mango', price, NULL)) AS Mango")) 
->where('status', 'open') 
->groupBy('supplier') 
->get(); 

本当に、クエリビルダは複雑なクエリ用に作られていません。彼らはその複雑取得する場合、あなたはそれが簡単だけで生のステートメントを使用して見つけるかもしれない:

$results = DB::select("SELECT supplier, 
    MAX(IF(item_name = 'Lemon', price, NULL)) AS Lemon, 
    MAX(IF(item_name = 'Apple', price, NULL)) AS Apple, 
    MAX(IF(item_name = 'Durian', price, NULL)) AS Durian, 
    MAX(IF(item_name = 'Mango', price, NULL)) AS Mango 
FROM offer 
where status = 'open' 
GROUP BY supplier"); 
+0

おかげ@Captainハイパーテキスト、あなたの私の一日保存答え、これ,,,完璧に働い –

+0

のHy @CaptainHypertext、あなたのおかげで多くのことを以前の回答、私は私のクエリでもう一つ問題がある、私は 'item_name'または 'サプライヤ'列のクエリをより動的にすることができます。 前の例では、4 'item_name' **(マンゴー、アップル、ドリアン、レモン)**があります。私は本当にどのように私のクエリに関数を挿入することができますか分からない。 実際のケースでは 'item_name'は無制限であるため、1つ以上の可能性があります。 –

+0

@CristalTravelクエリのロジックを調べるのに時間がかかりませんでした。あなたはこのクエリーで何をしようとしていますか?特定のアイテムがNULLになるのはなぜですか?あなたのテーブル構造は何ですか? –