2017-06-14 5 views
1

Ich habe die folgende SQL-Abfrage. Ich möchte die gleiche Abfrage in Laravel Query Builder implementieren. Aber kein Glück. Kann mir helfen, das zu bauen.Bedingte JOIN QUERY in Laravel Abfrage-Generator

SELECT DISTINCT IF(follower_id = 1, leader_id, follower_id) as user_id,U.email,T.name FROM `followers` as F JOIN users as U ON IF(follower_id = 1, U.id = F.leader_id,U.id=F.follower_id) JOIN timelines as T ON U.timeline_id = T.id where F.follower_id = 1 OR F.leader_id =1 

ich nicht, wie diese Bedingung

ON IF(follower_id = 1, U.id = F.leader_id,U.id=F.follower_id) 

in Laravel Query Builder hinzuzufügen.

Antwort

0

Ich habe nicht getestet, aber so etwas wie dies ist vielleicht das, was Sie suchen:

<?php 

DB::connection('my_connection') 
    ->table('followers AS F') 
    ->select([ 
    'DISTINCT IF(F.follower_id = 1, F.leader_id, F.follower_id) AS user_id', 
    'U.email', 
    'T.name', 
    ]) 
    ->leftJoin(
    'users AS U', function ($join) { 
     $join->on('U.id'. '=', 'F.leader_id')->where('F.follower_id', '=', 1); 
     $join->on('U.id', '=', 'F.follower_id')->where('F.follower_id', '<>', 1); 
    } 
) 
    ->leftJoin(
    'timelines AS T', 'T.id', '=', 'U.timeline_id' 
) 
    ->where([ 
    ['F.follower_id', '=', 1], 
    ['F.leader_id', '=', 1] 
    ]);