如何创建一个集合(或数组),列出所有父母及其子女以传递给视图

时间:2019-03-24 10:51:14

标签: php arrays laravel eloquent

我对Laravel很陌生。我知道我该怎么做,但不知道这是否是最好的方法。我有一个称为“流”的项目系统。它们每个都属于一个特定的“ FlowCategory”。我想使用控制器检索所有“ FlowCategory”项,然后检索其关联的子项(“流”),并将其传递给视图。

我想要的视图将显示每个流类别及其相关流的列表。

我已经设置了Eloquent,并且两个项目有关联。我已经在控制器中创建了一个foreach循环,并手动创建了一个数组,但是我保证它是否正确。

       foreach ($cats as $cat) {
           $catid = $cat->id;
           $flows[$catid] = \App\FlowCategory::find($catid)->flows;
       }

1 个答案:

答案 0 :(得分:1)

好的,也许您要做类似的事情。但是只是为了刷新概念:

  • belongsTo流类别
  • 流类别hasMany流。

您的型号:

流类别:

public function flows()
{
    return $this->belongsTo('App\Flow', 'category_id');
}

流量

public function flowCategory()
{
    return $this->hasMany('App\FlowCategory');
}

也就是说,如果要在视图中显示所有流类别及其各自的项目,则可以这样操作:

FooController.php

public function bar() {
  // "with" is to avoid N+1 query problem
  $flowsCategories = FlowCategory::with('flows')->get();

  return view('yourview', compact('flowsCategories'));
}

然后,要在视图上显示items,对于每个category,您可以这样做:

@foreach($flowsCategories as $flowCategory)
  @foreach($flowCategory->flows as $flow) 
     Flow: {{ $flow->name }} – Flow Category: {{ $flowCategory->name }}
  @endforeach
@endforeach