Foreach inside Foreach 基于列值

Foreach inside Foreach based on column value

我有一个 sql table 知识库

id , categoryid, title

id categoryid title
1 1 apple
2 1 fb
3 2 google
4 2 DB
5 3 Reebok

在我的 laravel blade 中,我试图创建一个如下所示的树视图

-1
--apple
--FB
-2
--google
--DB
-3
--Reebok

我的控制器执行基本查询,returns 整个 table 到视图。到目前为止,我是 laravel 的新手,我可以得到一个基本的 table 来像

一样工作
@foreach($knowledgebase as $key => $value)
<tr>
    <td>{!! $knowledgebase ->id !!}</td>
    <td>{!! $knowledgebase ->title!!}</td>
    <td>{!! $knowledgebase ->categoryid !!}</td>
</tr>
@endforeach

我将如何迭代 categroyid 列,显示第一个类别和所有 child 标题,然后转到下一个 categoryid。

更新

public function show($id) {

    //get article
    $knowledgebase = \App\Models\Knowledgebase::Where('knowledgebase_slug', request('knowledgebase_slug'))->first();

return view('knowledgebase', compact('knowledgebase'));

}
You will need to retrieve in controller the categories before ($categories)
@foreach($categories as $category)
   <tr>
      <td>{{ $category->id }}</td>
      <td>{{ $category->title}}</td>
      <td>{{ $category->categoryid }}</td>
   </tr>
@endforeach

无论如何,我设法通过在我的模型中添加一个函数 children 来解决这个问题。所以在我的模型中添加了

public function children(){
return $this->hasMany('App\Models\Knowledgebase', 'categoryid');
}

在此之后,我在我的 foreach

中简单地将其称为 foreach
@foreach($categories as $category)
<li><a href="#">{{ $category->title}}</a></li>
@if($category->children)
@foreach($category->children as $child)
<ul>
<li class="pl-3"><a href="#"> {{ $child->title}} </a></li>
</ul>
@endforeach
@endif
@endforeach