php - How to get results from laravel query builder in something similar to eloquent result
Get the solution ↓↓↓i am running a simple query like as below in 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);
but this one is returning results in flat array, so I try to make it nested as :
$result->groupBy(['property_id','id']); but still it is not same as the way as in eloquent results.
Is it possible to get the results in nested or grouping view or at least separating the notice related data on a different elements like:
[
[
[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
]
]
],
]
update: by using eloquent eager loading I could get results something like:
<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
)
)
)
)
)
)
Here you can see the nested results, like property version on its own levels and same goes for notices. I want something like this nested but only on notices level and I want to achieve it with query builder not eloquent.
Share solution ↓
Additional Information:
Link To Answer People are also looking for solutions of the problem: you must enable the openssl extension in your php.ini to load information from https://repo.packagist.org
Didn't find the answer?
Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.
Similar questions
Find the answer in similar questions on our website.
Write quick answer
Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.