2016-05-03 2 views
0

Я выполняю запрос, в котором желаемый результат сначала применяется, где предложение затем после того, как я хочу выполнить правое соединение. У меня есть этот запрос, но он выполняет первое соединение, а затем where.thank для вас любая помощь авансовый.JOIN после предложения WHERE в laravel

Вот мой запрос

$friends = friend_list::where('friend_lists.user_id', '=', $id) 
         ->rightJoin('users as u1', 'u1.id', '=', 'friend_lists.user_id2') 
         ->where('friend_lists.user_id2','!=',$id)      
         ->where('u1.id','!=',$id) 
         ->orwhere('status',null) 
         ->get(); 

отредактирован: Я реализую запрос друга раздел.
В таблице user содержится ... user (id, name, .., ..) friend_list (userid, userid2, status) в friend_list показывает статус с другим другом. Я правильно присоединился к friend_list .if status is null то нет строки для данного пользователя с текущим статусом user.so является нулевой, и это показывает add friend .so нулевого значение имеет важное значение для них права присоединиться user table

+0

Может пожалуйста, дайте мне знать, какие данные вам нужны? И какова структура вашей базы данных? – Siddharth

+0

Я отредактировал вопрос –

+0

Операторы sql не выполняются в том порядке, в котором вы их пишете, насколько я знаю. – haakym

ответ

1

Измените WHERE в другое условии соединения

$friends = friend_list::rightJoin('users as u1', function($join) { 
     $join->on('u1.id', '=', 'friend_lists.user_id2') 
       ->where('friend_lists.user_id', '=', $id); 
    }) 
    ->where('friend_lists.user_id2','!=',$id)      
    ->where('u1.id','!=',$id) 
    ->orwhere('status',null) 
    ->get(); 
Смежные вопросы