Например, у нас есть такая таблица, скажем категории.
id
имя
_lft
_rgt
parent_id
путь< /th>
is_folder
< td>1373
Windows
1
10
NULL
1373
1
1374
Стеклопакет
2
7
1373
1373.1374
1
1375
Аксессуары
8
9
1373
1373,1375
1
1376
Установка
3
4
1374< /td>
1373.1374.1376
0
1377
Регулировка
5
6
1374
1373.1374.1377
0
Модель «Категории» использует признак Kalnoy\Nestedset\NodeTrait.
В приведенном ниже коде построитель запросов уже содержит базовые фильтры (например, по имени).
Код: Выделить всё
if (!empty($filters['recursiveSearch']) && CommonService::parseBoolean($filters['recursiveSearch']) === true) {
/** @var QueryBuilder $query */
}
Например: по имени фильтра=adjust мы получаем строку Корректировка. с recursiveSearch вам также необходимо установить Windows и Glass unit.
Запрос также может иметь фильтр parentId. ЕслиparentId=null&name=adjust&recursiveSearch=true, то он должен вернуть Windows
Пожалуйста, помогите

Сначала я думал сделать просто with('ancestors'), но результат попадает в отношения и должен быть в основном запросе.
Потом я сделал дополнительный запрос , получил результат первой выборки, получил pluck('ancestors') и уже подставил их идентификаторы в результирующий запрос. Сработало, но если в первоначальной выборке, например, 1000 записей и у каждой по 3 родителя, то в итоге будет где-то по 3000 идентификаторов.
Подробнее здесь: https://stackoverflow.com/questions/788 ... -structure