Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过外键的Laravel组_Php_Mysql_Laravel_Eloquent - Fatal编程技术网

Php 通过外键的Laravel组

Php 通过外键的Laravel组,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我有三种型号 项目 类别 绘图 它们之间的关系如下 图纸属于类别 图纸也属于项目 图纸表格: 身份证 名字 项目编号 类别识别码 项目表: 身份证 名字 类别表: 身份证 名字 我想打印按类别名称分组的特定项目的所有图形,如下所示: 类别X *图纸1 *图2 Y类 *图纸3 *图4 我不想打印一个类别,如果它没有这个特定项目的图纸 这就是我所坚持的: Project->drawings()->groupBy('category_id'); 提前感谢要获得您想要的输出,从

我有三种型号

  • 项目
  • 类别
  • 绘图
  • 它们之间的关系如下

  • 图纸
    属于
    类别
  • 图纸也属于项目
  • 图纸表格:

    • 身份证
    • 名字
    • 项目编号
    • 类别识别码
    项目表:

    • 身份证
    • 名字
    类别表:

    • 身份证
    • 名字
    我想打印按类别名称分组的特定项目的所有图形,如下所示:

    类别X
    *图纸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。这是正确的方法还是有更好的方法?如果您在类别和图形上迭代,我会这样说,是的。