Не выводить пользователей , которые есть в другой таблице Laravel Mysql

182
17 марта 2022, 14:50

есть таблица игнорируемые

dialog_id | user_id

как к моему запросу, добавить условие, чтобы не выводить в диалогах переписку с теми людьми, которых я добавил в игнорируемые

мой запрос

$dialogs = DB::table('dialogs')
                ->leftJoin('users', function ($join) {
                    $join->on('users.id', '=', 'dialogs.recipient_id')
                        ->where('dialogs.user_id','=', Auth::user()->id)
                        ->orOn('users.id', '=', 'dialogs.user_id')
                        ->where('dialogs.recipient_id','=', Auth::user()->id);
                })
                ->leftJoin('user_attributes','user_attributes.user_id','=','users.id')
                ->select('user_attributes.fullname','user_attributes.avatar','user_attributes.age','users.email','dialogs.id','users.id as user')
                ->where('dialogs.user_id','=', Auth::user()->id)
                ->orWhere('dialogs.recipient_id','=', Auth::user()->id)->distinct('dialogs.id')
                ->get();
Answer 1

Написал так

 $dialogs = DB::table('dialogs')
                ->leftJoin('users', function ($join) {
                    $join->on('users.id', '=', 'dialogs.recipient_id')
                        ->where('dialogs.user_id','=', Auth::user()->id)
                        ->orOn('users.id', '=', 'dialogs.user_id')
                        ->where('dialogs.recipient_id','=', Auth::user()->id);
                })
                ->leftJoin('user_attributes','user_attributes.user_id','=','users.id')
                ->select('user_attributes.fullname','user_attributes.avatar','user_attributes.age','users.email','dialogs.id','users.id as user')
                ->where('dialogs.user_id','=', Auth::user()->id)
                ->whereNotExists(function ($query) {
                    $query->select(DB::raw(1))
                        ->from('dialog_ignores')
                        ->whereRaw('dialog_ignores.dialog_id = dialogs.id')
                        ->whereRaw('dialog_ignores.user_id = '.Auth::user()->id.'')
                        ->whereRaw('dialog_ignores.ignore_user_id = dialogs.recipient_id');
                })
                ->orWhere('dialogs.recipient_id','=', Auth::user()->id)->distinct('dialogs.id')
                ->whereNotExists(function ($query) {
                $query->select(DB::raw(1))
                    ->from('dialog_ignores')
                    ->whereRaw('dialog_ignores.dialog_id = dialogs.id')
                    ->whereRaw('dialog_ignores.user_id = '.Auth::user()->id.'')
                    ->whereRaw('dialog_ignores.ignore_user_id = dialogs.user_id');
            })
                ->get();
READ ALSO
Получение COUNT(*) из двух таблиц одним запросом

Получение COUNT(*) из двух таблиц одним запросом

такой вопрос уже есть, но ответа на него нет

90
Как перевести с десятичной системы счисления в римскую?

Как перевести с десятичной системы счисления в римскую?

Подскажите пожалуйста, с чего начать что б перевести с десятичной системы счисления в римскую и обратно?

85
Добавление Activity парсера HTML во Fragment

Добавление Activity парсера HTML во Fragment

Суть вопроса такая: у меня есть написанный парсер HTML в отдельном проекте, теперь я хочу впихнуть activity этого парсера во fragment 2 (вторая вкладка...

245
Как запустить анимацию перехода между активити с общим элементом после создания второй активити

Как запустить анимацию перехода между активити с общим элементом после создания второй активити

Есть задача, при переходе с одной актвити на другую, "перемещается" общий элемент (ImageView), во второй активити есть RecyclerView куда эта картинка...

67