Laravel Данные пагинации без коллекции

MaksM

Новичок
Можно ли как нибудь получить данные пагинации не получая коллекцию?
Т.е. если я использую $result = MyModel :: paginate(25), то вместе с нужными мне данными я получу еще коллекцию из 25 итемов, а мне нужно получить только количество страниц, урлы к нужным страницам через $result->url() и т.д.
 

MaksM

Новичок
Видимо я совсем тупой и не смог вычитать в этом абзаце как мне получить, допустим, количество страниц из таблицы users, при разбивке по 25 записей на страницу не используя модели и не получая при этом коллекцию из 25 элементов?
Вы можете мне помочь?
 

fixxxer

К.О.
Партнер клуба
Ручками. Выбрать количество записей и сконструировать paginator, как описано в документации.
 

MaksM

Новичок
Короче если человек с удочкой и банкой червей спросит у вас как насадить червя и поймать рыбу, то вы и в какой стороне река покажете и скажете, что ловить надо так как сказано в учебнике рыболова, и покажете где этот учебник продается, но ни за что не возьмете удочку в руки и не нацепите червяка на крючок, чтобы человек наглядно увидел как.

Иногда достаточно просто показать как.
 

AmdY

Пью пиво
Команда форума
Короче если человек с удочкой и банкой червей спросит у вас как насадить червя и поймать рыбу, то вы и в какой стороне река покажете и скажете, что ловить надо так как сказано в учебнике рыболова, и покажете где этот учебник продается, но ни за что не возьмете удочку в руки и не нацепите червяка на крючок, чтобы человек наглядно увидел как.

Иногда достаточно просто показать как.
А ты будешь стоять весь день с удочкой и червяком пока не подойдёт кто-то, кто всё разжуёт. В доке как видишь тоже на стали рассписывать, а нагуглить можно за минуту.
 

MaksM

Новичок
Тебе вместо помощи не лень писать всякую чушь типа "а ты, а ты". Я не стою и не жду с червяком, я зашел на тематический форум и задал конкретный вопрос. Не знаешь ответ - не умничай. Я не задал вопрос что мне сделать чтобы найти информацию как решить свой вопрос. Я знаю о существовании гугла и он мне не помог. Возможно я вопрос ставил неправильно, это неважно. Не найдя ответа в гугле я обратился за помощью сюда. Этот форум вроде как для этого создан, а не для указателей в сторону гугла? То, что в доке тоже не стали расписывать не делает им чести. Такие же как ты наверное там сидят и думают, зачем людям что-то объяснять, сами нагуглят за минуту.
 

jonjonson

Охренеть
У коллекции есть методы и свойства. У объекта пейдженации есть методы и свойства. А я вот хочу! Так?
 

MaksM

Новичок
У коллекции есть методы и свойства. У объекта пейдженации есть методы и свойства. А я вот хочу! Так?
Нет, не так.
Я спросил есть ли возможность, получить данные пагинатора без формирования коллекции. То, что у коллекции есть свои методы и свойства в данном вопросе вообще не важно.
По сути мне нужно получить количество страниц и сгенерировать ссылки на нужные мне страницы (например на последнюю). У пагинатора все это уже есть, но при его использовании собирается еще и коллекция, которая мне вообще ненужна в текущем вопросе. (все это уже сказано в первом посте).
Я могу получить количество записей через Model::count(), произвести вычисления и получить количество страниц. Также я могу и ссылки в итоге сгенерировать, но я думал, что мне это не придется делать если это возможно получить через пагинатор не генерируя коллекцию.
 

MaksM

Новичок
Вообщем пошел по пути минимализма. Model::select(['id'])->paginate() таким образом в коллекции будут только айдишники и много они не займут.
 

fixxxer

К.О.
Партнер клуба
До меня только что дошло, что метод для генерации урла у тебя, кажется, в модели. Ну если так, молодец, сам себе ногу отстрелил. А если нет, то мне непонятна проблема :)
 
Последнее редактирование:

Adelf

Administrator
Команда форума
@fixxxer, ну это не совсем так.
Коллекция сущностей имеет метод paginate - и это самое плохое. но там просто создание специальной вроде viewModel - Paginator. Который уже умеет урлы. если бы это было без метода paginate, то все было бы вполне по канонам.
 

fixxxer

К.О.
Партнер клуба
Не, ну там вроде коллекция оборачивается же.
Хотя я в ту сторону не смотрел и особо не хочу, такие штуки обычно рендерятся вообще js-ом.
А если учесть то, что оно, похоже, всирает бутстраповские классы, это вообще годится только для админок.
 

jonjonson

Охренеть
Вообще метод links() генерирует ссылки, а paginate() - возвращает коллекцию.
У коллекции есть методы, как я указал выше. Один из них lastPage() - получение номера последней страницы.

Впрочем узнать число страниц не генерируя коллекцию то же легко. И paginate() ругать при этом не нужно.
Он выполняет ровно то, что от него требуется.
Для получения числа страниц посчитайте число записей в выборке и разделите на число выводимых записей.
 

MaksM

Новичок
До меня только что дошло, что метод для генерации урла у тебя, кажется, в модели. Ну если так, молодец, сам себе ногу отстрелил. А если нет, то мне непонятна проблема :)
Чур меня, какой метод генерации урла в модели? ))). Генерация урла в пагинаторе, которому требуется коллекция для работы. Хоть и не мой случай, но пример подходящий: список тем форума где под названием темы еще приводятся линки на страницы, на которые пользователь может сразу попасть. Если у меня отображается, например сотня тем, то получать для каждой темы коллекцию постов, чтобы сгенерировать пагинацию (через тот же метод link()), это же бред. Но сам пагинатор довольно удобный и все нужное в нем уже есть т.ч. не хочется писать свои методы для генерации пагинации. Вот у меня и родился вопрос, решил который я так, как описал в своем предыдущем посте. Это конечно костыль, но более простого метода я не нашел )
 

Reymur

Новичок
Здравствуйте. Помогите пожалуйста: Я получаю

Collection {#340 ▼
#items: array:2 [▼
0 => User {#334 ▶}
1 => User {#399 ▶}
]
}

как мне зодать этому коллекцию paginate?
 
Последнее редактирование:
Сверху