как добавить пагинацию к вложенным комментариям в laravel? - PullRequest
1 голос
/ 31 октября 2019
class Nested extends Model{
  public function nestedfunc()
{
    return $this->hasMany(Nested::class, 'parent_id');
}
 public function childnestedfunc()
{
    return $this->hasMany(Nested::class, 'parent_id')->with('nestedfunc');
}
}

// это моя модельная функция для рекурсии. как добавить нумерацию страниц в корень вложенных комментариев. я храню все комментарии к одной и той же таблице

  1. комментарий к корню 1-комментарии к корню 1 ....
  2. комментарий к корню 2 - вложенные комментарии к корню 2 ....
  3. разбиение на корневые комментарии
  4. корневые комментарии 3 - вложенные комментарии root 3 ....
  5. корневые комментарии 4-внедренные комментарии root 4 .....
  6. разбиение на корневые комментарии
  7. и т. Д.

1 Ответ

1 голос
/ 31 октября 2019

Здесь вам не нужны две отдельные функции, отношения могут рекурсивно вызывать себя, поэтому сначала измените свои отношения на этот

public function children()
{
    return $this->hasMany(Nested::class, 'parent_id')->with('children');
}

Затем для своего запроса вы можете просто сделать

Nested::where('parent_id', null)->with('children')->paginate();

Когда я построил модель вложенных комментариев, я также добавил область, чтобы сделать ее немного более читабельной

public function scopeTopLevel($query)
{
   return $query->where('parent_id', null);
}

Так что теперь вызов в моем контроллере просто

Comment::topLevel()->with('children')->paginate()
...