2016-05-08 18 views
2

に生のSQLクエリを変更する:は、私はこのクエリを持ってLaravelクエリビルダオブジェクト

public function rank() 
{ 
    $sql = " 
    select id, points, team_name, 
    (select count(*) 
    from teams t2 
    where t2.points > t.points or 
      (t2.points = t.points and t2.id <= t.id) 
    ) as rank 
    from teams t 
    where id = ?; 
    "; 
    $ranks = DB::select($sql, [$this->id]); 
    foreach ($ranks as $rank) { 
     return $rank->rank; 
    } 
} 
私は生のクエリとは対照的に、Laravelクエリビルダにそれを変更したい

、私はこれをどのように行うのでしょうか?

答えて

2

これは動作するはずです。

$select_raw = <<<SQL 
    id, points, team_name,(
    select count(*) 
    from teams t2 
    where t2.points > t.points or 
     (t2.points = t.points and t2.id <= t.id) 
    ) as rank 
SQL; 

$ranks = Team::where('id', $this->id)->selectRaw($select_raw)->get(); 
+1

ありがとうございました – iJamesPHP2

関連する問題