Я пытаюсь создать соединение между двумя таблицами, чтобы избежать использования сообщений о злоупотреблениях в списке пользователей, что я делаю, приведено ниже:
Что у меня есть У меня 2 таблицы, которые
Таблица пользователей
id | name |
1 | testA |
2 | testB |
3 | testC |
4 | testD |
5 | testE |
report_abuse Таблица
id | reported_by| reported_to
1 | 1 | 2
2 | 1 | 3
теперь мне нужно, когда я запрашиваю, я должен получить только 2 записи 4 и 5
Что я сделал Я создаю запрос для получения указанных выше записей:
DB::table('users as U')
->select('U.id','U.name')
->where('U.id', '!=', auth()->user()->id)
->leftJoin('report_abuse as RA', 'RA.reported_by', '=', 'U.id')
->where('RA.reported_by', '=', auth()->user()->id)
->where('RA.reported_to', '!=', 'U.id')
->orderBy('U.id', 'desc')
->paginate(10);
Я здесь что-то делаю не так, поэтому не получаю должных результатов.
Ребята, не могли бы вы помочь мне, очень признателен.
Спасибо






Насколько я понимаю, вам нужен список пользователей, за исключением тех, о которых он сообщил и его самого.
вот решение
$authId = auth()->user()->id;
DB::table('users as U')
->select('U.id','U.name')
->where('U.id', '!=', $authId)
->leftJoin('report_abuse as RA', function ($report) use ($authId){
$report->on('reported_to', '=', 'U.id')
->where('reported_by', '=', $authId);
})
->whereNull('reported_to')
->orderBy('U.id', 'desc')
->paginate(10);