SQL/Laravel: получить родителей в древовидной структуре данныхPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 SQL/Laravel: получить родителей в древовидной структуре данных

Сообщение Anonymous »

Всем привет) Я использую Laravel, MariaDB.
Например, у нас есть такая таблица, скажем категории.



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 */
}
При передаче параметра recursiveSearch необходимо вывести не только значения, соответствующие фильтру, но и всех их родителей.
Например: по имени фильтра=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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»