Php 通过外键的Laravel组
我有三种型号Php 通过外键的Laravel组,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我有三种型号 项目 类别 绘图 它们之间的关系如下 图纸属于类别 图纸也属于项目 图纸表格: 身份证 名字 项目编号 类别识别码 项目表: 身份证 名字 类别表: 身份证 名字 我想打印按类别名称分组的特定项目的所有图形,如下所示: 类别X *图纸1 *图2 Y类 *图纸3 *图4 我不想打印一个类别,如果它没有这个特定项目的图纸 这就是我所坚持的: Project->drawings()->groupBy('category_id'); 提前感谢要获得您想要的输出,从
项目
类别
绘图
属于
类别- 身份证
- 名字
- 项目编号
- 类别识别码
- 身份证
- 名字
- 身份证
- 名字
*图纸1
*图2 Y类
*图纸3
*图4 我不想打印一个类别,如果它没有这个特定项目的图纸 这就是我所坚持的:
Project->drawings()->groupBy('category_id');
提前感谢要获得您想要的输出,从类别的方向来解决问题会更容易 以下内容将查找所有类别,其中图形属于指定的
$projectId
,但仅查找实际具有一个或多个图形的类别
$projectId = 123;
$projectScope = function ($query) use ($projectId) {
return $query->where('project_id', $projectId)
});
$categories = Category::with(['drawings' => $projectScope])
->whereHas('drawings', $projectScope)
->get();
你可以这样做
$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
希望您能理解。那么,有什么问题吗?但这将遍历属于某个类别的所有图形。我只想打印属于给定项目的图形。图形表既有project_id,也有category_id。这是正确的方法还是有更好的方法?如果您在类别和图形上迭代,我会这样说,是的。