在视图中循环嵌套关系

时间:2016-12-13 17:00:35

标签: laravel laravel-5 eloquent blade laravel-5.3

我试图在我的刀片视图中循环浏览一些数据。这是我的数据库设置:

enter image description here

我希望在我看来有以下内容:

enter image description here

所以我可以循环完成这些日子,然后根据他们所在的类别对任务进行排序。我对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'));
}

但是,我如何确保按天分类,然后按类别订购?非常感谢。

1 个答案:

答案 0 :(得分:2)

您可以尝试以下方法:

$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

注意 - 我没有测试过,但您可以尝试一下。