Ларавел 4 - Красноречивый. Бесконечные дети в полезный массив?
у нас есть таблица категорий. Каждая категория может иметь необязательного родителя (по умолчанию 0, если родителя нет).
То, что я хочу сделать, это построить простое дерево списка HTML с уровнями категорий.
Пример даты:
Foods
-- Fruit
---- Apple
---- Banana
---- Orange
-- Veg
---- Cucumber
---- Lettuce
Drinks
-- Alcoholic
---- Beer
---- Vodka
Misc
-- Household Objects
---- Kitchen
------ Electrical
-------- Cooking
---------- Stove
---------- Toaster
---------- Microwave
Обратите внимание, что это должно работать около 10 'уровни, Я'я бы хотел, чтобы оно было бесконечным, но я действительно не хочу идти по пути использования модели вложенного множества в качествеприведет к огромным задержкам в этом проекте.
Документы по этому вопросу для Laravel ужасны, без реальной ссылки на то, с чего начать. Я'Я играл с ним в течение нескольких дней, пытаясь понять, что делать, и, похоже, ничего не получилось без огромного беспорядочного блока для каждого цикла друг в друге 10 раз.
мы получили мое дерево данных, используя в моей модели следующее:
hasOne('Item', 'id', 'parent_id');
}
public function children()
{
return $this->hasMany('Item', 'parent_id', 'id');
}
public function tree()
{
return static::with(implode('.', array_fill(0,10, 'children')))->where('parent_id', '=', '0')->get();
}
}
Таким образом все родительские и дочерние элементы получают уровень 10. Это работает нормально, но вы не можете ничего сделать с дочерними данными, не имея вручную 10 циклов foreach друг с другом.
Что я здесь не так делаю? Конечно, это не должноНеужели это трудно / плохо выполнено? Все, что я хочу сделать, это получить простой список HTML с элементами в древовидной структуре.
Мы собрали быстрый пример SQLFiddle из фиктивных данных, использованных выше:http://sqlfiddle.com/#!2/e6d18/1