Как отобразить записи родительской дочерней плоской таблицы в виде вложенного списка в Php? - PullRequest
0 голосов
/ 16 октября 2019

Я создаю приложение 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

Не могли бы вы дать мне знать, как я могу это сделать?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Вы можете создать ссылку на себя

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>

(можетнужна некоторая очистка, чтобы не перепутать имена переменных, но вы получите общее представление)

0 голосов
/ 16 октября 2019

Попробуйте

class Task extends Model
{
    public function tasks()
    {
        return $this->hasMany('App\Task', 'parent')
            ->with('tasks');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...