遍历视图中的嵌套关系
Loop through nested relation in view
我正在尝试循环浏览 blade 视图中的一些数据。这是我的数据库设置:
我想说的是:
所以我可以循环一天,然后按任务所在的类别对任务进行排序。我没有使用 Laravel 的经验,而且我在按类别对任务进行最佳排序时遇到了困难方式。
在我的 天 模型中,我有:
public function tasks()
{
return $this->belongsToMany('App\Task');
}
在我的任务模型中我有:
public function days()
{
return $this->belongsToMany('App\Day');
}
public function category()
{
return $this->belongsTo('App\Category');
}
在我的类别模型中我有:
public function tasks()
{
return $this->hasMany('App\Task');
}
在我的控制器中我现在只有:
public function index()
{
$categories = Category::all();
return view('app.blade.php', compact('categories'));
}
但是我怎样才能确保先按天数然后再按类别订购它们?非常感谢帮助。
您可以尝试以下方法:
$days = Days::with('tasks.category')->get();
$days = $days->map(function ($day) {
$day->tasks = $day->tasks->groupBy('category_id');
return $day;
});
检查它在 groupBy() 方法之后是如何转换的
dd($days);
那么在你看来你可以这样做:
@foreach ($days as $day)
{{ $day->name }}
@foreach ($days->tasks as $tasks)
{{ $tasks->first()->category->name }}
@foreach ($tasks as $task)
{{ $task->name }}
@endforeach
@endforeach
@endforeach
注意 - 我还没有测试过,但你可以试一试。
我正在尝试循环浏览 blade 视图中的一些数据。这是我的数据库设置:
我想说的是:
所以我可以循环一天,然后按任务所在的类别对任务进行排序。我没有使用 Laravel 的经验,而且我在按类别对任务进行最佳排序时遇到了困难方式。
在我的 天 模型中,我有:
public function tasks()
{
return $this->belongsToMany('App\Task');
}
在我的任务模型中我有:
public function days()
{
return $this->belongsToMany('App\Day');
}
public function category()
{
return $this->belongsTo('App\Category');
}
在我的类别模型中我有:
public function tasks()
{
return $this->hasMany('App\Task');
}
在我的控制器中我现在只有:
public function index()
{
$categories = Category::all();
return view('app.blade.php', compact('categories'));
}
但是我怎样才能确保先按天数然后再按类别订购它们?非常感谢帮助。
您可以尝试以下方法:
$days = Days::with('tasks.category')->get();
$days = $days->map(function ($day) {
$day->tasks = $day->tasks->groupBy('category_id');
return $day;
});
检查它在 groupBy() 方法之后是如何转换的
dd($days);
那么在你看来你可以这样做:
@foreach ($days as $day)
{{ $day->name }}
@foreach ($days->tasks as $tasks)
{{ $tasks->first()->category->name }}
@foreach ($tasks as $task)
{{ $task->name }}
@endforeach
@endforeach
@endforeach
注意 - 我还没有测试过,但你可以试一试。