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

Проверенные VDS на SSD в Европе от $4 и России: Датацентр №1 от 199руб

Тема в разделе "Laravel", создана пользователем MaksM, 11 авг 2017.

  1. MaksM

    MaksM Новичок

    Сообщения:
    28
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Можно ли как нибудь получить данные пагинации не получая коллекцию?
    Т.е. если я использую $result = MyModel :: paginate(25), то вместе с нужными мне данными я получу еще коллекцию из 25 итемов, а мне нужно получить только количество страниц, урлы к нужным страницам через $result->url() и т.д.
     
  2. AmdY

    AmdY Пью пиво Команда форума

    Сообщения:
    6.953
    Ваш город:
    Belarus, Minsk
    Address:
    Minsk, Belarus
    Country:
    Location on Map:
  3. MaksM

    MaksM Новичок

    Сообщения:
    28
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Где там это сказано? Я там все туда-сюда перечитал
     
  4. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.462
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    "Manually Creating A Paginator"
     
  5. MaksM

    MaksM Новичок

    Сообщения:
    28
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Видимо я совсем тупой и не смог вычитать в этом абзаце как мне получить, допустим, количество страниц из таблицы users, при разбивке по 25 записей на страницу не используя модели и не получая при этом коллекцию из 25 элементов?
    Вы можете мне помочь?
     
  6. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.462
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Ручками. Выбрать количество записей и сконструировать paginator, как описано в документации.
     
  7. MaksM

    MaksM Новичок

    Сообщения:
    28
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Короче если человек с удочкой и банкой червей спросит у вас как насадить червя и поймать рыбу, то вы и в какой стороне река покажете и скажете, что ловить надо так как сказано в учебнике рыболова, и покажете где этот учебник продается, но ни за что не возьмете удочку в руки и не нацепите червяка на крючок, чтобы человек наглядно увидел как.

    Иногда достаточно просто показать как.
     
  8. флоппик

    флоппик promotor fidei Команда форума Партнер клуба

    Сообщения:
    4.795
    Ваш город:
    Павлодар, Казахстан
    Address:
    Pavlodar, Kazakhstan
    Country:
    Location on Map:
    Ты прав.
     
    AmdY нравится это.
  9. AmdY

    AmdY Пью пиво Команда форума

    Сообщения:
    6.953
    Ваш город:
    Belarus, Minsk
    Address:
    Minsk, Belarus
    Country:
    Location on Map:
    А ты будешь стоять весь день с удочкой и червяком пока не подойдёт кто-то, кто всё разжуёт. В доке как видишь тоже на стали рассписывать, а нагуглить можно за минуту.
     
  10. MaksM

    MaksM Новичок

    Сообщения:
    28
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Тебе вместо помощи не лень писать всякую чушь типа "а ты, а ты". Я не стою и не жду с червяком, я зашел на тематический форум и задал конкретный вопрос. Не знаешь ответ - не умничай. Я не задал вопрос что мне сделать чтобы найти информацию как решить свой вопрос. Я знаю о существовании гугла и он мне не помог. Возможно я вопрос ставил неправильно, это неважно. Не найдя ответа в гугле я обратился за помощью сюда. Этот форум вроде как для этого создан, а не для указателей в сторону гугла? То, что в доке тоже не стали расписывать не делает им чести. Такие же как ты наверное там сидят и думают, зачем людям что-то объяснять, сами нагуглят за минуту.
     
  11. jonjonson

    jonjonson Охренеть

    Сообщения:
    676
    Ваш город:
    Находка, Приморский край, Россия
    Address:
    Nakhodka, Russia
    Country:
    Location on Map:
    У коллекции есть методы и свойства. У объекта пейдженации есть методы и свойства. А я вот хочу! Так?
     
  12. MaksM

    MaksM Новичок

    Сообщения:
    28
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Нет, не так.
    Я спросил есть ли возможность, получить данные пагинатора без формирования коллекции. То, что у коллекции есть свои методы и свойства в данном вопросе вообще не важно.
    По сути мне нужно получить количество страниц и сгенерировать ссылки на нужные мне страницы (например на последнюю). У пагинатора все это уже есть, но при его использовании собирается еще и коллекция, которая мне вообще ненужна в текущем вопросе. (все это уже сказано в первом посте).
    Я могу получить количество записей через Model::count(), произвести вычисления и получить количество страниц. Также я могу и ссылки в итоге сгенерировать, но я думал, что мне это не придется делать если это возможно получить через пагинатор не генерируя коллекцию.
     
  13. MaksM

    MaksM Новичок

    Сообщения:
    28
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Вообщем пошел по пути минимализма. Model::select(['id'])->paginate() таким образом в коллекции будут только айдишники и много они не займут.
     
  14. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.462
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    До меня только что дошло, что метод для генерации урла у тебя, кажется, в модели. Ну если так, молодец, сам себе ногу отстрелил. А если нет, то мне непонятна проблема :)
     
    Последнее редактирование: 13 авг 2017
  15. Adelf

    Adelf Laravel&PhpStorm Команда форума

    Сообщения:
    3.128
    Ваш город:
    Казань
    Address:
    Kazan, Russia
    Country:
    Location on Map:
    @fixxxer, ну это не совсем так.
    Коллекция сущностей имеет метод paginate - и это самое плохое. но там просто создание специальной вроде viewModel - Paginator. Который уже умеет урлы. если бы это было без метода paginate, то все было бы вполне по канонам.
     
  16. fixxxer

    fixxxer К.О. Партнер клуба

    Сообщения:
    12.462
    Ваш город:
    Moscow, Russia
    Address:
    Moscow, Russia
    Country:
    Location on Map:
    Не, ну там вроде коллекция оборачивается же.
    Хотя я в ту сторону не смотрел и особо не хочу, такие штуки обычно рендерятся вообще js-ом.
    А если учесть то, что оно, похоже, всирает бутстраповские классы, это вообще годится только для админок.
     
  17. jonjonson

    jonjonson Охренеть

    Сообщения:
    676
    Ваш город:
    Находка, Приморский край, Россия
    Address:
    Nakhodka, Russia
    Country:
    Location on Map:
    Вообще метод links() генерирует ссылки, а paginate() - возвращает коллекцию.
    У коллекции есть методы, как я указал выше. Один из них lastPage() - получение номера последней страницы.

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

    MaksM Новичок

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