Ich habe eine Kategorien-Tabelle. Jede Kategorie kann ein optionales Elternelement haben (Standard ist 0, wenn kein Elternteil vorhanden ist).Laravel 4 - beredt. Infinite Kinder in brauchbare Array?
Was ich tun möchte, ist einen einfachen HTML-Listenbaum mit den Ebenen der Kategorien zu erstellen.
Beispiel Datum:
Foods
-- Fruit
---- Apple
---- Banana
---- Orange
-- Veg
---- Cucumber
---- Lettuce
Drinks
-- Alcoholic
---- Beer
---- Vodka
Misc
-- Household Objects
---- Kitchen
------ Electrical
-------- Cooking
---------- Stove
---------- Toaster
---------- Microwave
Beachten Sie, dass dies für etwa 10 'Ebene' arbeiten muss. Ich würde es lieben, unendlich zu sein, aber ich möchte wirklich nicht den Weg des Verwendens eines geschachtelten Satzmodells gehen, da es große Verzögerungen auf diesem Projekt verursachen wird.
Die Dokumente auf dieser für Laravel sind schrecklich, ohne wirklichen Hinweis, wo man überhaupt anfangen soll. Ich habe tagelang damit gespielt und versucht, herauszufinden, was zu tun ist, und es scheint, als ob ich ohne einen riesigen unordentlichen Block von jeder Schleife innerhalb von 10 Mal nirgendwohin komme.
Ich habe meinen Baum von Daten habe die folgend in meinem Modell:
<?php
class Item extends Eloquent {
public function parent()
{
return $this->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();
}
}
Dies wird all Eltern und Kinder bis zu einem Niveau von 10 Dies funktioniert gut, aber man kann nicht wirklich dann tun alles mit den Kinddaten, ohne manuell 10 foreach Schleifen innerhalb von einander zu haben.
Was mache ich hier falsch? Das sollte doch nicht so hart/schlecht ausgeführt sein? Ich möchte lediglich eine einfache HTML-Liste mit den Elementen in einer Baumstruktur erstellen.
Ich habe zusammen ein schnelles SQLFiddle Beispiel der Dummy-Daten oben verwendet: http://sqlfiddle.com/#!2/e6d18/1
Verschachtelte Sätze sind eigentlich einfacher. Außerdem gibt es einige bereits vorhandene Pakete wie [Cartalysts verschachtelte Sätze] (http://docs.cartalyst.com/nested-sets-2) oder [Baum] (https://github.com/etrepat/baum). –
Jason, was ist der Vorteil von verschachtelten Sets im Vergleich zu der akzeptierten Antwort? Ich muss mich zwischen den beiden entscheiden. Und mit Baum scheint es keinen Weg zu geben, diesen Baum trotzdem wiederzubeschaffen, es sei denn, Sie verwenden die akzeptierte Antwort ebenfalls. – kJamesy