Php 如何从laravel查询生成器中获得类似于雄辩结果的结果
我在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
$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
,并且有很多
。然后使用带有“函数的“急切加载”来获得结果我已经更新了我的问题,请看一看