@Artem0071
Безработный mr. Junior

Как правильно делать пагинацию комментариев при древовидной системе?

Ситуация следующая:
У каждого комментария может быть "родитель"
Вложенность может быть бесконечная

Что нужно:
Нужно сделать так, чтобы начальные комментарии можно было выводить постранично, но при этом еще выводились потомки этих самых родителей
Если бы была вложенность только на 1 уровень, то можно было бы узнать родителей первым запросом и затем просто посмотреть потомков

А как сделать так же, но только когда вложенность может быть бесконечной?

Мое недорешение:
Как по мне, можно сделать у каждого комментария дополнительный атрибут "0-родитель" и мне кажется это решило бы проблему

Но проблема в том, что для этого придется переписывать всю таблицу
Может есть какое то другое решение?
  • Вопрос задан
  • 95 просмотров
Решения вопроса 1
@Kostik_1993
Web Developer
Вашу проблему решит любой пакет для работы с nestedset например этот https://github.com/lazychaser/laravel-nestedset

Ставите пакет, создаете миграцию как описано в документации, добавляете трейт к моделе комментариев, запускаете команду в консоли которая автоматически все пересчитает.

Дальше вы сможете выбрать постранично всех родителей и к ним загрузить внутренние комментарии
Comments::whereIsRoot()->pagination(5)->get();

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы