-2

我正在创建一个 Laravel 应用程序。我有一个自引用表。我需要将记录显示为嵌套,如下所示。

这是表中的条目:

id            name              parent
1             Task 1             0 
2             Task 2             0
3             Sub Task 1         1
4             Sub Task 2         1
5             Sub Task 3         2
6             Task 3             0
7             Sub Sub Task 1     4

期望的结果是:

Task 1 
  Sub Task 1
  Sub Task 2 
    Sub Sub Task 1
 Task 2
  Sub Task 3
Taks 3

请让我知道我该怎么做?

提前致谢。

4

2 回答 2

0

您可以创建自引用关系

class Task extends Model{

    public function tasks()
    {
        return $this->hasMany('App\Task', 'parent');
    }
}

在您的控制器中:

$tasks = Task::where('parent',0)->get();
return view ('tasks.index',compact('tasks'));

然后使视图递归。

<div>
    @foreach($tasks as $task)
        {{$task->name}}
        @if(count($task->tasks))
            @include('tasks.index',['tasks' => $task->tasks])
        @endif
    @endforeach
</div>

(可能需要进行一些清理以防止混淆变量名称,但您明白了一般的想法)

于 2019-10-16T12:27:28.930 回答
0

试试看

class Task extends Model
{
    public function tasks()
    {
        return $this->hasMany('App\Task', 'parent')
            ->with('tasks');
    }
}
于 2019-10-16T12:19:37.450 回答