Php Laravel查询生成器中的条件联接查询

Php Laravel查询生成器中的条件联接查询,php,laravel-5,Php,Laravel 5,我有以下SQL查询。我想在laravel查询生成器中实现相同的查询。但是没有运气。可以帮助我如何建立这个 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 time

我有以下SQL查询。我想在laravel查询生成器中实现相同的查询。但是没有运气。可以帮助我如何建立这个

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  
我不知道如何添加此条件

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

在Laravel query builder中。

我还没有测试过,但您可能正在寻找类似的东西:

<?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]
  ]);