2016-11-27 74 views
3

我試圖讓下面的查詢中laravel:轉換MySQL查詢到機鋒laravel查詢

SELECT a.name AS subname, a.area_id, b.name, u. id, u.lawyer_id,u.active_search, 

          FROM subarea a 
          LEFT JOIN user_subarea u ON u.subarea_id = a.id 
          AND u.user_id = ? 
          LEFT JOIN branch b ON a.area_id = b.id 

這樣做是爲了獲得分區,看看搜索被用戶激活。

user_subarea表可能有一個記錄,該記錄匹配active_search等於0或1的子區表的id。如果它不存在,我希望查詢返回null。

雖然我能夠在原始SQL中實現這一點,但當我在Laravel中嘗試使用同樣的口才時,我沒有返回任何值。我做了以下幾點:

$query = DB::table('subarea') 

      ->join('user_subarea', function($join) 
     { 
      $value = \Auth::user()->id; 
      $join->on('subarea.id', '=', 'user_subarea.subarea_id')->where('user_subarea.user_id', '=',$value); 
     }) 
      ->leftJoin('branch', 'subarea.area_id', '=', 'branch.id') 
      ->select('branch.name', 'subarea.name as subarea', 'user_subarea.active_search_lawyer', 'user_subarea.id') 

      ->get(); 

任何幫助將不勝感激。

回答

0

試試這個,如果您遇到問題,請發表評論。

$value = \Auth::user()->id; 

$query = DB::table('subarea') 
      ->where('user_subarea.user_id', '=',$value) 
      ->leftJoin('user_subarea', 'subarea.id', '=', 'user_subarea.subarea_id') 
      ->leftJoin('branch', 'subarea.area_id', '=', 'branch.id') 
      ->select('subarea.name AS subname','subarea.area_id', 'branch.name', 'user_subarea.id','user_subarea.lawyer_id','user_subarea.active_search') 
      ->get(); 
+0

Sachith,謝謝你的回答,但沒有完全回報。無論如何,我已經找到了自己的答案: – lostintheriver

+0

@ lostintheriver好,請張貼您的答案。它會幫助其他人有相同的情況 – Sachith

1

我發現自己這只是在第一個連接添加lefjoin答案。它不在laravel文檔中,但也起作用。

$query = DB::table('subarea') 

      ->lefjoin('user_subarea', function($join) 
     { 
      $value = \Auth::user()->id; 
      $join->on('subarea.id', '=', 'user_subarea.subarea_id')->where('user_subarea.user_id', '=',$value); 
     }) 
      ->leftJoin('branch', 'subarea.area_id', '=', 'branch.id') 
      ->select('branch.name', 'subarea.name as subarea', 'user_subarea.active_search_lawyer', 'user_subarea.id') 

      ->get();