2016-06-24 5 views
0

Итак, у меня есть этот очень большой поисковый запрос, и я также пытаюсь удалить всех пользователей из поиска, которые заблокировали поиск пользователя.Laravel 5.2 WhereNotIn query

Я очень запутался и обернулся и буду рад любой помощи.

В таблице blocked_users содержит

id 
user_id 
blocked_user_id 

, когда пользователь блокирует другого пользователя создается строка. Теперь до сих пор я замечаю, что пользователь не заблокировал кого-либо, которого они вообще не обнаруживают в поиске (мое предположение из-за соединения, если пользователь не существует в таблице, тогда они появляются вверх.)

здесь короткий фрагмент моего запроса

$query = User::join('user_profiles', 'users.id', '=','user_profiles.user_id'); 
    $query->Join('blocked_users', 'users.id', '=', 'blocked_users.user_id'); 
    $query->whereNotIn('blocked_users.blocked_user_id',[Auth::user()->id])->select('users.*','user_profiles.*'); 

EDIT

ИТАК Если мой идентификатор пользователя 1, и пользователь 2 не желает мне связаться с ними больше или даже шоу в моем поиске, Они заблокировали бы меня, что бы добавить строку в таблицу

int, user_id = 2, blocked_user_id = 1

Если я выполняю поиск, я не хочу, чтобы пользователь 2 отображался в поиске пользователя 1s.

Однако с левым джойном Нет пользователей, если мой идентификатор пользователя находится в любой строке заблокированного__сервера, независимо от пользователя, который заблокировал меня.

Я не уверен, как еще я могу дать визуальные данные. весь запрос довольно массивный и работает отлично. Я просто не уверен, как объединить предложение where.

ответ

1

Это может сделать это:

$query = User::join('user_profiles', 'users.id', '=','user_profiles.user_id'); 
     $query->leftJoin('blocked_users', function ($sub_query) { 
     $sub_query->on('users.id', '=', 'blocked_users.user_id'); 
     $sub_query->where('blocked_users.blocked_user_id', '=', Auth::user()->id); 
    }); 
    $query->where('users.id', '!=', Auth::user()->id); 
    $query->whereNull('blocked_users.id'); 
    $query->select('users.*','user_profiles.*'); 
+0

Спасибо, получить немного ошибки. - BadMethodCallException в строке Builder.php 2345: Вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: id() –

+0

Спасибо, что он работает! –

Смежные вопросы