我有两个模型,Project和Tasks。我已将它们定义如下:
class Project extends Model
{
protected $fillable = ['name'];
public function tasks() {
return $this->hasMany(Task::class);
}
}
class Task extends Model
{
protected $fillable = ['name', 'description', 'completed'];
public function project() {
return $this->belongsTo(Project::class);
}
}
我想打印项目列表(1)和每个项目我要列出任务(2),并且我想要显示每个任务的详细信息单个任务(3)。< / p>
要实现(1)和(2)我已经设置了一个projectsController(仅显示相关部分):
class ProjectsController extends Controller
{
public function index() {
$projects = Project::all();
return view('projects.index', compact('projects'));
}
public function show(Project $project) {
return view('projects.show', compact('project'));
}
}
和路由文件:
Route::get('projects', array('as' => 'project-index', 'uses' => 'ProjectsController@index'));
Route::get('project/{project}', array('as' => 'project-show', 'uses' => 'ProjectsController@show'));
在(1)的视图文件中,我循环使用 @foreach($ projects as $ project)和(2),我循环使用 @ foreach($ project-&gt; tasks as $ task)。一切正常。
然而,对于(3),为了显示我单击的单个任务,我定义了一个TasksController:
class TasksController extends Controller
{
public function show(Project $project, Task $task) {
return view('tasks.show', compact('task'));
}
}
和路线:
Route::get('project/{project}/task/{task}', array('as' => 'project-tasks-show', 'uses' => 'TasksController@show'));
我有找到如何最好地完成的问题(3)。在视图文件中,当我在Taskscontroller中传递'task'集合时,我可以访问任务详细信息。
我认为这样做效率不高也不明智:
答案 0 :(得分:0)
尝试这个,如果在任务模型中有project_id的外键
class TasksController extends Controller
{
public function show($project, $task) {
$task = Task::where('project_id', $project)->find($task);
return view('tasks.show', compact('task'));
}
}
和路线:
Route::get('project/{project}/task/{task}', array('as' => 'project-tasks-show', 'uses' => 'TasksController@show'));
并回复它。