Вы должны разбить на страницы вызывающего абонента вашей основной модели.
Я не знаю точно, может ли это воспроизвести ваш реальный сценарий, но давайте посмотрим на этот пример:
Допустим, у вас естьмодель хэштеги
Итак, предположим, что код может выглядеть примерно так:
$users = DB::table('hashtags AS tags')
->select('tags.*')
->join('[posts AS post','post.id','=','tags.id')
->distinct()
->paginate(5, ['tags.*']);
Я не знаю, будет ли ваш запрос очень точным, нодля этого я считаю, что лучшим подходом будет выполнение необработанного запроса, который может показаться дорогостоящим для вашей базы данных и операции, но вы можете обойти этот подход, индексируя и разделяя базу данных.
Запоминание всегда красноречивого иногда, даже когда мы создаем запросы на соединение, может быть более дорогостоящим для вашей базы данных.
Поскольку вы беспокоитесь о масштабируемости, поэтому лучше всего было бы написать представление дляполучить все данные с правильной индексацией и секционированием.