Ich entwickle eine einfache Platform von Schularbeiten. Die plataform haben zwei Tabellen: themes
- wo die Themen der einzelnen Jobs gespeichert werdenWie erstellt man eine hierarchische Tabelle mit Laravel?
id
parent_id
name
works
- hier werden die Arbeiten der einzelnen Schüler sein
id
theme_id
description
Nun, ich versuche zu machen eine hierarchische Tabelle. Wo jede Reihe das Thema hätte und wenn man die Reihe öffnet, würde es die Werke des Themas zeigen und wenn es ein Kind-Thema gibt, würde es den Link dazu anzeigen ... und so weiter!
Im Modell, ich habe:
public function childs() {
return $this->hasMany(self::class,'parent_id','id') ;
}
In meinem Controller (i dies verbessern müssen):
public function index(){
$themes = DB::table('themes', DB::raw('SELECT * WHERE lft IS BETWEEN parent.lft AND parent.rgt'))->get();
$works = Work::all();
$themes = array_map(function($theme){
$theme->works = [];
return $theme;
}, $themes->toArray());
foreach($themes as $theme){
foreach($works as $work){
if($theme->id === $work->theme_id){
$theme->works[] = $work;
}
}
}
return view('dashboard.trabalhos.index', ['themes' => $themes]);
}
Die Rückkehr des Reglers Funktion ist:
array:3 [▼
0 => {#275 ▼
+"id": 1
+"parent_id": null
+"name": "Tema1"
+"description": "asdasdasd"
+"lft": 1
+"rgt": 6
+"depth": 0
+"created_at": null
+"updated_at": null
+"works": array:1 [▼
0 => Work {#287 ▶}
]
}
1 => {#278 ▶}
2 => {#279 ▶}
]
Und in der Ansicht war mein letzter Test etwas wie folgt aus:
<table id="asd" class="highlight">
<thead>
<tr>
<th>Tema</th>
</tr>
</thead>
<tbody>
@forelse($themes as $theme)
@php($asd = $theme->depth)
@if($theme->depth === 0)
<tr data-tt-id="{{$theme->id}}" class="branch collapsed">
<td>
@if(count($theme->works) > 0)
<?php
foreach($theme->works as $work){
echo "nome: " . $work->title;
}
?>
@endif
{{$theme->name}}
</td>
</tr>
@elseif($theme->depth > 0)
<tr data-tt-id="{{$theme->id}}" data-tt-parent-id="{{$theme->parent_id}}" class="branch collapsed" style="display: none;">
<td>
{{$theme->name}}
</td>
</tr>
@endif
@empty
@endforelse
<tr></tr>
</tbody>
</table>
Ich habe versucht bootstrap-treeview
und treetable
verwenden, aber vielleicht mein Problem ist Logik in Frontend. Könnte mir jemand helfen und mir ein Licht geben?
können Sie zeigen uns etwas von Ihrem Code? – Drudge
Versuchen Sie diese Tutorials http://itsolutionstuff.com/post/laravel-5-category-treeview-hierarchical-structure-example-with-demoexample.html – manjunath
Sie benötigen rekursive Weise –