2017-05-28 8 views
1

ich ein Array ausgegeben haben, ist Baum wie Struktur wie folgt aus:Wie Baumstruktur rekursiv in Laravel Blade anzuzeigen?

enter image description here

Hier habe ich eine Datenbanktabelle mit Eltern-Kind-Beziehung wie haben: Hier

public function up() 
{ 
    Schema::create('trees', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('parent_id')->unsigned()->nullable(); 
     $table->string('name'); 
     $table->integer('has_child'); 
     $table->integer('depth'); 
     $table->timestamps(); 
     $table->foreign('parent_id')->references('id')->on('trees')->onDelete('cascade'); 
    } 
} 

,

Tiefe definiert die Tiefe von der Wurzel im Baum, parent_id bezieht sich auf Eltern in der gleichen Tabelle und has_child definiert die Existenz des Kindes. Für das Blatt ist has_child Null und für die oberste parent_id ist null.

Die Tiefe kann einen Wert von bis zu 5 haben. Im obigen Fall gibt es nur 2 für Testzwecke.

Hier ist mein Beispieldatenbankeintrag:

public function getChilds($d){ 
     $tree = array(); 
     $children = array(); 
     $tree['parent'] = $d->toArray(); 
     if($d->has_child==1){ 
      $data = Tree::where('parent_id',$d->id)->get(); 
      foreach ($data as $d) { 
       $first = $this->getChilds($d); 
       array_push($children, $first); 
      } 
     } 
     $tree['children'] = $children; 
     return $tree; 
    } 

    public function getTree(){ 
     $tree = array(); 
     $data = Tree::where('parent_id',null)->get(); 
     foreach ($data as $d) { 
      $first = $this->getChilds($d); 
      array_push($tree, $first); 
     } 
     return view('tree',compact('tree')); 
    } 

Nun, dies

I angezeigt werden soll:

enter image description here

ich die oben Baumstruktur rekursiv in Controller wie bekommen haben Daten in baumartiger Struktur. Aber aufgrund der variablen Tiefe kann ich keine Tiefe erkennen, bis zu der ich gehen sollte.

Gibt es eine Möglichkeit, diese Struktur rekursiv in Laravel Blade anzuzeigen?

Erwarteter Ausgang ist so etwas wie dieses:

One0 

    One0Two0 

     One0Two0Three0 

     One0Two0Three1 

    One0Two1 

     One0Two1Three0 

     One0Two1Three1 

    One0Two2 

     One0Two2Three0 

     One0Two2Three1 

Jede Art von Hilfe ist willkommen.

Antwort

0

Ich empfehle Ihnen Laravel-Nestedset-Paket, das Ihr Leben wirklich einfach macht Bitte befolgen Sie die Paketdokumentation, um Ihre Tabellenstruktur zu erstellen, das Abrufen, Speichern und Aktualisieren von rekursiven Daten wird wirklich einfach. Hier ist ein Paketlink.

https://github.com/lazychaser/laravel-nestedset

+0

Ich habe nehmen schon einen Moment, um dies zu sehen, aber ich habe die Verwendung dieses Pakets in meinem Problem nicht verstehen –