遍历视图中的嵌套关​​系

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

注意 - 我还没有测试过,但你可以试一试。