Доброго времени суток коллеги, подскажите как в Laravel 7 можно ограничить выборку древовидной структуры, суть идеи просто регистрация пользователей происходит друг под друга как в партнерских программах. За основу я взял рекурсивный вывод.
В модельке у меня
public function children()
{
return $this->hasMany(User::class);
}
public function childrenRef(){
return $this->hasMany(User::class)->with('children');
}
и в контроллере я просто вызываю
$users = User::where('user_id', 1)->with('childrenRef')->get();
В переменную user приходит массив юзеров вложенных друг в друга
например:
us1
--us2
--us3
------us4
----------us5
--us7
Получается 4 уровня вложенности
А мне например нужно получить только 3
Нашел 1 способ это в шаблоне в blade у foreach есть условие
@if ($loop->depth >= 3)
@break
@else
Но минус данного решения очевиден, так как в шаблон передается уже готовый массив, и когда пользователей будет 5-10к в совокупности они составят уровней 15 то еще терпимо для запроса к базе
А если пользователей будет свыше 30к то сколько же будет обрабатываться запрос к базе что бы вытянуть все это.
Исходя из всего вопроса, можно ли как то ограничить глубину вложенности, на моменте запроса выборки из базы данных.