【问题标题】:Loop through nested relation in view在视图中循环嵌套关系
【发布时间】:2017-04-28 20:10:06
【问题描述】:

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

在我看来,我希望有以下几点:

所以我可以遍历这些天,然后按任务所在的类别对任务进行排序。我对 Laravel 没有经验,而且我在以最佳方式按类别排序任务时遇到了困难。

在我的 Days 模型中,我有:

public function tasks()
{
    return $this->belongsToMany('App\Task');
}

在我的 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'));
}

但是我怎样才能确保按天排序,然后按类别排序呢?非常感谢帮助。

【问题讨论】:

  • 你应该至少有 ManyToMany 关系的数据透视表..
  • @BasheerAhmed,是的,抱歉。我的图片不正确。现在应该是正确的。

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


【解决方案1】:

你可以尝试如下:

$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

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

【讨论】:

    猜你喜欢
    • 2016-06-11
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 2021-11-26
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多