我有些模型需要按特定顺序列出。我有许多Task
都属于Project
:Project
可以有多个Task
,而几个Task
可以属于许多Project
。
在我的TaskController@index
中,我想列出所有Task
,并按Project.id
和Project.updated_at
分组。示例:
Project 1
- Task 1
- Task 2
- Task 3
Project 2
- Task 1
- Task 2
- Task 3
如何在TaskController
中以最简单的方式解决此问题?
答案 0 :(得分:1)
问题的关键是使用查询功能扩展关系:
$this->hasMany('Task')->orderBy('updated_at');
示例:
您的Project.php
型号:
<?php
class Project
{
public function tasks()
{
return $this->hasMany('Task')->orderBy('updated_at');
}
}
您的TaskController.php
控制器:
<?php
class TaskController
{
public function index()
{
$projects = Project::with('tasks')->orderBy('updated_at')->get();
// Then use $projects in the blade template
return view('my-projects', compact('projects'));
}
}
您的projects.blade.php
刀片文件:
@foreach($projects as $project)
<p>{{$project->name}}</p>
<ul>
@foreach($project->tasks as $task)
<li>{{$task->name}}</li>
@endforeach
</ul>
@endforeach