2017-09-13 191 views
0

我有這樣的SQL查詢,並在那一刻,我不知道如何與幼蟲查詢生成器生成此SQL查詢到Laravel查詢生成器

SELECT h1.Name, h2.Torvorlage from 
(SELECT Name, Player_ID FROM `Spieler` WHERE Vereins_ID = 1) h1 
left JOIN 
(SELECT Torvorlage, Player_ID FROM `SpielerStats` left join Spielplan on (SpielerStats.Spielplan_ID = Spielplan.Spielplan_ID) WHERE Spielplan.Spielplan_ID = 1 and Spielplan.Spieltag = 2) h2 
on h1.Player_ID = h2.Player_ID 

誰能給我一個例子,如何建立呢?

+0

添加您嘗試的內容。它會幫助你獲得更好的解決方案。 – TheChetan

回答

0

試試這個。

DB::table('Spieler')->where('Vereins_ID','=',1) 
     ->join('SpielerStats','SpielerStats.Player_ID','=','Spieler.Player_ID','left') 
     ->select('SpielerStats.Torvorlage','Spieler.Name') 
     ->join('Spielplan','SpielerStats.Spielplan_ID','=','Spielplan.Spielplan_ID','left') 
     ->where('Spielplan.Spielplan_ID','=',1) 
     ->where('Spielplan.Spieltag','=',2)->get(); 

或者

$d = DB::raw('(SELECT Torvorlage, Player_ID FROM `SpielerStats` left join Spielplan on (SpielerStats.Spielplan_ID = Spielplan.Spielplan_ID) WHERE Spielplan.Spielplan_ID = 1 and Spielplan.Spieltag = 2) as h2') 


DB::table('Spieler') 
    ->select('Spieler.Name','h2.Torvorlage') 
    ->leftJoin($d, 'h2.Player_ID', '=', 'Spieler.Player_ID') 
    ->where('Vereins_ID','=',1) 
    ->get(); 
+0

結果爲空[] – Flamms

+0

@Flamms請檢查我已經添加了1個解決方案。希望它能幫助你。 – Nikita

0

爲了得到更好的答案,你應該解釋你的查詢在做什麼。與這些表格的關係是什麼?根據我的經驗,當我有一個複雜的SQL查詢轉換爲Eloquent時,我發現在模型上定義關係可以解決問題。

0

我解決了這個與DB:選擇

$spielerstats = DB::Select('SELECT h1.Name, h2.Torvorlage from 
(SELECT Name, Player_ID FROM `Spieler` WHERE Vereins_ID = 1) h1 
left JOIN 
(SELECT Torvorlage, Player_ID FROM `SpielerStats` left join Spielplan on (SpielerStats.Spielplan_ID = Spielplan.Spielplan_ID) WHERE Spielplan.Spielplan_ID = 1 and Spielplan.Spieltag = 1) h2 
on h1.Player_ID = h2.Player_ID'); 

我不知道這是否是最好的方式,但它的工作原理。