@serhiops
Python/JavaScript/C++

Как правильно сформировать такой запрос?

Имеется следующая таблица:
64ab0744cb703742532347.png
Мне нужно получить список всех комментариев к посту, чтобы вывести их подобным образом:
64ab08f1c7de8546490269.png
Причем комментарии должны выводитсся в порядке от старых до новых. Пробывал сделать так:
$comments = $post->comments()->whereNull('parent_id')->with(['user', 'childrens'])->get()->toArray();
// код функции comments 
public function comments() {
    return $this->hasMany(\App\Models\Comment::class, 'post_id', 'id');
}

Получаю все корневые комментарии(те, на которые никто не отвечал) + ответы на них, но комментарии, которые являются ответами на некорневые обьекты не берутся с бд.
Как можно сформировать такой запрос не прибегая к большому количеству отдельных запросов? Видел closure-table-comments, но не хочется подключать только для одной страницы. Еще думал создать отдельню колонку root_id, которая будет храить идендификатор корневого обьекта и выбирать по нему.
  • Вопрос задан
  • 159 просмотров
Решения вопроса 1
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
Проще всего рут комментарию давать парент_ид равный своему ид, тогда все становится элементарным - ордер по парент_ид, креатед_эт. При выводе просто проверять если парент = ид. А все коментарии которые ответы на ответы все равно писать как ответ на рут коментарий, так как они будут тупо по дате строиться, и разницы в принципе нет. Разве что вы хотите чтобы ветвление было бесконечным, тогда проще ввести рут_ид.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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