如何在laravel中使用两个foreach?

时间:2017-07-28 18:56:55

标签: php laravel laravel-5

我有一个类别表,它由'parent_id''categoryid'组织。我需要在列表中组织它,在那里我将父类与子类分组。

我创建了这段代码。

在控制器中,我得到了类别的值。

public function index()
    {
      $cat1 = Category::where('erp_parentid', '=', 0)->get();
      foreach($cat1 as $categoria1){
        $cat2 = Category::where('erp_parentid', '=', $categoria1->erp_categoryid)->get();
        return view('admin.categories')->with('cat1', $cat1)->with('cat2', $cat2);
      }
    }

$cat2是子类别,我通过父类别的categoryid获取其值。

但是当我将值传递给视图时,所有父类别都采用与第一个相同的值。

enter image description here 我使用该代码在视图中显示值:

<div class="container">
  <div class="row">
    <ul class="list-group">
      @foreach($cat1 as $value)
      <a data-toggle="collapse" data-target="#catfilha{{$value->erp_categoryid}}"><li class="list-group-item">{{$value->erp_name}}</li></a>
      <ul id="catfilha{{$value->erp_categoryid}}" class="collapse">
        @foreach($cat2 as $value2)
        <li>{{$value2->erp_name}}</li>
        @endforeach
      </ul>
      @endforeach
    </ul>
  </div>
</div>

我在网站上搜索了类似的案例,但发现没有相似之处,有什么建议吗?提前谢谢。

1 个答案:

答案 0 :(得分:2)

您应该在模型中定义关系并在视图中调用它们。尝试这样的事情:

在分类模型中:

public function getParent()
{
    return self::where('erp_parentid', '=', $this->erp_categoryid)->get();
}

在控制器中:

public function index()
{
    $cat1 = Category::where('erp_parentid', '=', 0)->get();
    return view('admin.categories')->with('cat1', $cat1);
}

在视图中:

<div class="container">
  <div class="row">
    <ul class="list-group">
      @foreach($cat1 as $value)
      <a data-toggle="collapse" data-target="#catfilha{{$value->erp_categoryid}}"><li class="list-group-item">{{$value->erp_name}}</li></a>
      <ul id="catfilha{{$value->erp_categoryid}}" class="collapse">
        @foreach($value->getParent() as $value2)
        <li>{{$value2->erp_name}}</li>
        @endforeach
      </ul>
      @endforeach
    </ul>
  </div>
</div>

在你的代码中,return语句在循环中,因此cat2将始终是cat1的第一项中的类别。