我有2个模型,可以通过所有人调用:
$blocks = Block::all();
$cats = BlockCategory::all();
一个块具有与之关联的类别,我想关联数据,以便我可以显示具有某些块的所有类别。我希望我能正确解释。
所以我可以打电话给
@foreach($cats as $cats)
{{$cats->title}}
@foreach($cats->blocks as $blocks)
{{$block->title}}
@endforeach
@endforeach
有什么想法如何合并数据?如果可以的话,我基本上是在构建菜单。
答案 0 :(得分:2)
您需要定义块与块类别之间的关系。确保您的数据库表具有外键关系。
将以下代码添加到您的块类别模型中
public function blocks()
{
return $this->hasMany('App\Block');
}
确保您的块模型位于app/
目录中。
现在,只需在控制器中检索类别,
$categories = BlockCategory::all();
然后您可以显示如下数据:
@foreach($categories as $category)
{{$category->title}}
@foreach($category->blocks as $block)
{{$block->title}}
@endforeach
@endforeach
答案 1 :(得分:0)
您可以选择几种解决方法。
这样定义您的关系:
模型
public function blocks()
{
return $this->hasMany('App\Block');
}
控制器
使用with()
$categories = Blockcategory::with('blocks')->get();
一旦定义了关系,就可以从模型中调用blocks()方法来检索块
示例
$categories = Blockcategory::find(1)->blocks()->get();
// another way
$blocks = Blockcategory::blocks()->get();
Sagar的答案很好,但是在同一查询中获得类别及其关系总是更好的选择。通过仅调用Blockcategory::all()
就可以在刀片文件中获得该关系,但是laravel必须针对每个循环中的每个块进行附加查询。拥有1000条记录时,这可能会导致性能问题。