我有三个模特
Project
Category
Drawing
它们之间的关系如下
belongs to
类别belongs to
项目绘图表:
项目表:
类别表:
我想打印按类别名称分组的特定项目的所有图纸,如下所示:
类别X
*图1
*图2
类别Y
*图3
*图4
如果此特定项目没有图纸,我不想打印类别。
这就是我所坚持的:
Project->drawings()->groupBy('category_id');
提前谢谢
答案 0 :(得分:4)
为了获得您想要的输出,从类别的方向更容易解决问题。
以下内容将查找所有类别,其中包含属于指定$projectId
的图纸,但仅包含实际具有一个或多个图纸的类别。
$projectId = 123;
$projectScope = function ($query) use ($projectId) {
return $query->where('project_id', $projectId)
});
$categories = Category::with(['drawings' => $projectScope])
->whereHas('drawings', $projectScope)
->get();
答案 1 :(得分:0)
你可以这样做
$categories = Category::whereIn('id',$project->drawings()
->groupBy('category_id')
->pluck('category_id')
)->get();
现在,迭代$categories
喜欢
@foreach($categories as $category)
// display category name as {{$category->name}}
@foreach($category->drawings() as $drawing)
// display drawings as {{$drawing->name}}
@endforeach
@endfoeach
希望你明白。