Как исправить запрос к базе данных в laravel нескольких объединений и mysql запросе MAX - PullRequest
0 голосов
/ 17 января 2020

Всем доброго времени суток. Я пытался решить проблему с дубликатами полученных строк из базы данных в течение всего дня. Моя задача - соединить 4 таблицы: пользователей, платежи, отзывы и ошибки. Перед добавлением последней таблицы код работал правильно После присоединения к последней таблице появилось много дубликатов. Буду признателен за полезные советы или помощь. Ниже приведен код

$users = $this->DB()->table('users')
            ->leftJoin('portmone', 'users.id', '=', 'portmone.user_id')
            ->leftJoin('callback_users', 'users.id', '=', 'callback_users.parent_id')
            ->leftJoin('users_ercodes', 'users.id', '=', 'users_ercodes.user_id')
            ->select(DB::raw("users.id, users.fio, users.email, users.phone, max(portmone.created_at) as created_at, MAX(users_ercodes.ercode) as ercode, MAX(callback_users.date) as date, portmone.user_id as user_id, portmone.status as status"))
            ->whereNotIn('users.id', ['portmone.user_id'])
            ->where('portmone.status', 0)
            ->groupBy(
                'portmone.user_id',
                'portmone.created_at',
                'users.id',
                'users.fio',
                'users.email',
                'users.phone',
                'callback_users.date',
                'users_ercodes.ercode',
                'portmone.status'
            )
            ->orderBy('date')
            ->distinct()
            ->paginate(20);
...