Php 如何从laravel查询生成器中获得类似于雄辩结果的结果

Php 如何从laravel查询生成器中获得类似于雄辩结果的结果,php,laravel,Php,Laravel,我在laravel中运行一个简单的查询,如下所示: $query = DB::table('properties as p') ->join('companies as c','c.id','p.company_id') ->leftJoin('property_versions as pv','pv.property_id','p.id') ->leftJoin('notices as n

我在laravel中运行一个简单的查询,如下所示:

        $query = DB::table('properties as p')
            ->join('companies as c','c.id','p.company_id')
            ->leftJoin('property_versions as pv','pv.property_id','p.id')
            ->leftJoin('notices as n','n.property_id','p.id')
            ->select('p.*','pv.*','c.name as company_name','n.slug','n.file_type','n.seen')
            ->orderBy('p.created_at','desc');
        $result = $query->get();
        dd($result);
<pre>Array
(
    [0] => Array
        (
            [id] => 415
            [property_name] => Test
            [company_id] => 1
            [rate] => 
            [floor_file] => 0
            [sort_offset] => 
            [calculated_offset] => 0
            [fp_property_version_id] => 
            [created_at] => 2021-04-02 20:50:34
            [updated_at] => 2021-04-02 20:50:34
            [name] => Company A
            [property_versions] => Array
                (
                    [0] => Array
                        (
                            [id] => 434
                            [property_name] => Test
                            [version_name] => v1
                            [property_code] => 
                            [rate] => 
                            [completed] => 1
                            [availability_file] => 0
                            [floor_file] => 0
                            [pricing_review] => 0
                            [company_id] => 1
                            [mapping_template_id] => 495
                            [created_by] => 2
                            [axis] => 0
                            [view_style] => fs
                            [sort_offset] => 
                            [calculated_offset] => 0
                            [property_id] => 415
                            [created_at] => 2021-04-04 08:52:42
                            [updated_at] => 2021-04-04 08:53:42
                            [last_uploaded_at] => 2021-04-04 08:52:42
                            [last_amenity_uploaded_at] => 2021-04-04 08:52:42
                            [notices] => Array
                                (
                                )

                        )

                    [1] => Array
                        (
                            [id] => 435
                            [property_name] => Test
                            [version_name] => v2
                            [property_code] => 
                            [rate] => 
                            [completed] => 1
                            [availability_file] => 0
                            [floor_file] => 0
                            [pricing_review] => 0
                            [company_id] => 1
                            [mapping_template_id] => 496
                            [created_by] => 2
                            [axis] => 0
                            [view_style] => fs
                            [sort_offset] => 
                            [calculated_offset] => 0
                            [property_id] => 415
                            [created_at] => 2021-04-05 21:11:31
                            [updated_at] => 2021-04-05 21:12:40
                            [last_uploaded_at] => 2021-04-05 21:11:31
                            [last_amenity_uploaded_at] => 2021-04-05 21:11:31
                            [notices] => Array
                                (
                                    [0] => Array
                                        (
                                            [slug] => UUKF2oyn
                                            [file_type] => 2
                                            [seen] => n
                                        )
                                    [1] => Array
                                        (
                                            [slug] => UUKF2abc
                                            [file_type] => 2
                                            [seen] => n
                                        )
                                )

                        )

                )

        )
)
但这是在平面数组中返回结果,所以我尝试将其嵌套为:

$result->groupBy(['property_id','id']);但它仍然不同于雄辩的结果

是否可以在嵌套或分组视图中获得结果,或者至少在不同元素上分离通知相关数据,如:

[
    [
        [id] => 407
        [property_name] => dummy name
        [company_id] => 1
        [rate] => 
        [floor_file] => 2,
        [notices] => [
            [
                'slug' => UUKF2oyn
                'file_type' => 2
                'seen' => n
            ],
                        [
                'slug' => UUKF2abc
                'file_type' => 1
                'seen' => n
            ]
        ]
    ],
    [
        [id] => 407
        [property_name] => dummy name
        [company_id] => 1
        [rate] => 
        [floor_file] => 2,
        [notices] => [
            [
                'slug' => UUKF2oyn
                'file_type' => 2
                'seen' => n
            ],
                        [
                'slug' => UUKF2abc
                'file_type' => 1
                'seen' => n
            ]
        ]
    ],

]
更新:通过使用雄辩的渴望加载,我可以得到如下结果:

数组
(
[0]=>阵列
(
[id]=>415
[属性名称]=>测试
[公司id]=>1
[费率]=>
[楼层文件]=>0
[排序偏移量]=>
[计算的_偏移]=>0
[fp\U属性\U版本\U id]=>
[创建时间]=>2021-04-02 20:50:34
[更新时间]=>2021-04-0220:50:34
[名称]=>A公司
[属性\u版本]=>数组
(
[0]=>阵列
(
[id]=>434
[属性名称]=>测试
[版本名称]=>v1
[属性代码]=>
[费率]=>
[完成]=>1
[可用性\u文件]=>0
[楼层文件]=>0
[定价审查]=>0
[公司id]=>1
[映射模板id]=>495
[创建人]=>2
[轴]=>0
[查看样式]=>fs
[排序偏移量]=>
[计算的_偏移]=>0
[财产id]=>415
[创建时间]=>2021-04-04 08:52:42
[更新时间]=>2021-04-04 08:53:42
[上次上传时间]=>2021-04-04 08:52:42
[最后设施上传时间]=>2021-04-04 08:52:42
[注意]=>数组
(
)
)
[1] =>阵列
(
[id]=>435
[属性名称]=>测试
[版本名称]=>v2
[属性代码]=>
[费率]=>
[完成]=>1
[可用性\u文件]=>0
[楼层文件]=>0
[定价审查]=>0
[公司id]=>1
[映射模板id]=>496
[创建人]=>2
[轴]=>0
[查看样式]=>fs
[排序偏移量]=>
[计算的_偏移]=>0
[财产id]=>415
[创建时间]=>2021-04-05 21:11:31
[更新时间]=>2021-04-05 21:12:40
[上次上传时间]=>2021-04-05 21:11:31
[最后设施上传时间]=>2021-04-05 21:11:31
[注意]=>数组
(
[0]=>阵列
(
[slug]=>UUKF2oyn
[文件类型]=>2
[见]=>n
)
[1] =>阵列
(
[段塞]=>UUKF2abc
[文件类型]=>2
[见]=>n
)
)
)
)
)
)

在这里,您可以看到嵌套的结果,例如属性版本在其自身的级别上,而通知也是如此。我想要这种嵌套的东西,但只是在通知级别上,我想用查询生成器来实现它。我想你指的是JSON格式?在你的模型中使用关系
belongsTo
,并且
有很多
。然后使用带有“函数的“
急切加载”来获得结果我已经更新了我的问题,请看一看