我有一个类别表,它由'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
获取其值。
但是当我将值传递给视图时,所有父类别都采用与第一个相同的值。
<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>
我在网站上搜索了类似的案例,但发现没有相似之处,有什么建议吗?提前谢谢。
答案 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的第一项中的类别。