Сортировка по полю другой таблицы Laravel

Здраствуйте. У меня есть задача отсортировать пользователей по их рейтингу. Рейтинг находится в другой таблице user_info. Делаю через подзапрос, вывод на страницу осуществляю по 10 записей с помощью метода paginate. Но если рейтинг повторяется - например у меня есть 30 пользователей с рейтингом 100, то на первой и второй странице пагинации нахожу дублирующихся пользователей. То есть один и тот же пользователь есть и на первой и на второй странице. Как этого избежать? Окружение: Laravel 8.4, PosgreSQL 12, PHP 7.4

$this->builder->orderBy(UserInfo::select('rating')
            ->whereColumn('user_info.user_id', 'users.id')
            ->orderBy('rating', $direction)
            ->take(1),
            $direction
        );

Ответы (1 шт):

Автор решения: no4ch

Берешь пользователей, джоинишь к ним рейтинг и делаешь сортировку по рейтингу. С пагинацией работает без проблем

    User::query()
        ->join('user_info', function ($j) {
            /* @var JoinClause $j*/
            $j->on('users.id', '=', 'user_info.user_id');
        })
        ->orderBy('user_info.rating')
        ->paginate(15);
→ Ссылка