2015-08-24 39 views
1

如何創建一個使用Laravel的查詢生成器的查詢:Laravel查詢生成器嵌套連接和Alias

SELECT `content`.`tagable_id`,`taged`.`tag_id` 
FROM `taged` 
RIGHT JOIN 
    (SELECT `taged`.`tagable_id`,`taged`.`tag_id` 
    FROM `taged` 
    WHERE `taged`.`mask_flag`='0' 
     AND `taged`.`tagable_type`='App\\\Post' 
     AND `taged`.`user_id`='1') AS `content` 
ON `taged`.`mask_flag`='1' 
    AND `content`.`tagable_id`=`taged`.`tagable_id` 
    AND `taged`.`tagable_type`='App\\\Post' 
    AND `taged`.`user_id`='1' 

SELECT taged.tagable_id...周圍的括號內是我的主要問題所在。

+0

我一直在努力,並一直無法得到它的工作還沒有。它會產生許多錯誤。謝謝你。 – CrackingTheCode

+0

這些錯誤是什麼?嘗試將'WHERE'條件移出連接函數,因爲我已在下面進行了更新 –

回答

1

這裏是你的Laravel查詢:

$result = DB::table('taged') 
      ->select('content.tagable_id', 'taged.tag_id') 
      ->rightJoin(DB::raw('SELECT tagable_id, tag_id FROM taged AS content'), function($join) 
     { 
      $join->on('taged.mask_flag', '=', 1); 
      $join->on('content.tagable_id', '=', 'taged.tagable_id'); 
      $join->on('taged.tagable_type', '=', 'App\\\Post'); 
      $join->on('taged.user_id', '=', 1); 
     }) 
     ->where('content.mask_flag', '=', 0); 
     ->where('content.tagable_type', '=', 'App\\\Post'); 
     ->where('content.user_id', '=', 1); 
     ->get();