2017-09-13 144 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'); 

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