Присоединяйтесь к Query в laravel, чтобы избежать сообщения о злоупотреблениях пользователей - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь создать объединение между двумя таблицами, чтобы избежать использования отчетов о злоупотреблениях в списке пользователей, и то, что я делаю, приведено ниже:

Что у меня есть, у меня есть 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);

Я делаю что-то здесь не так, поэтому я не получаю правильные результаты.

Можете ли вы, ребята, пожалуйста, помогитеменя высоко оценили.

Спасибо

1 Ответ

0 голосов
/ 24 октября 2018

Если я понимаю, вам нужен список пользователей, за исключением того, о котором он сообщил, и о себе.

вот решение

$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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...