У меня есть эти данные
$result = DB::table('zone_regions')
->where('zone_regions.id', '=', $request->input('zone'))
->join('areas', function ($join) use($area) {
$join->on('zone_regions.id', '=', 'areas.zone_id')
->where('areas.id', '=', $area);
})
->join('hthree_regions', function ($join) use($city) {
$join->on('areas.id', '=', 'hthree_regions.area_id')
->where('hthree_regions.id', '=', $city);
})
->join('segments', function ($join) use($segment) {
$join->on('hthree_regions.id', '=', 'segments.hthree_id')
->where('segments.id', '=', $segment);
})
->join('links', function ($join) use($link) {
$join->on('segments.id', '=', 'links.segment_id')
->where('links.id', '=', $link);
})
->join('titik_closurs', function ($join) use($closure) {
$join->on('links.id', '=', 'titik_closurs.link_id')
->where('titik_closurs.id', '=', $closure);
})
// ->leftjoin('core_histories', 'titik_closurs.id', '=', 'core_histories.titik_id')
// ->select('titik_closurs.*', 'core_histories.*')
->groupBy('titik_closurs.id')
->get();
Я хочу добавить titik_closurs
истории (core_histories) в виде массива в мои возвращенные данные.
Пример данных
Current data
Это то, что у меня есть сейчас
data: [{...}]
0: {...}
id: 3
latitude: "6.2088000"
longitude: "106.8456000"
site_name: "98987454-54741115"
user_id: 1
zone_id: 2
И это то, что я хочу добавить к результатам
data: [{...}]
0: {...}
id: 3
latitude: "6.2088000"
longitude: "106.8456000"
site_name: "98987454-54741115"
user_id: 1
zone_id: 2
histories: [{......}]
histories: [{......}]
массив.
Примечание
Эти данные (текущие данные) немного испорчены, так как включают данные всех объединенных таблиц в мою функцию, что мне действительно нужно, это просто данные таблицы titik_closurs
и дочерний элемент этой таблицы core_histories
остальные для меня в данном случае не очень полезны.
Пример окончательных данных, которые я sh должен иметь:
data: [{...}]
0: {...}
// just data of `titik_closurs` exclude data of `zone_regions, areas, hthree_regions` etc.
id: 3
latitude: "6.2088000"
longitude: "106.8456000"
site_name: "98987454-54741115"
histories: [{....}]
Есть идеи, как это сделать?
Обновление
Если я изменю свой запрос (последняя часть) на что-то вроде этого:
->join('titik_closurs', function ($join) use($closure) {
$join->on('links.id', '=', 'titik_closurs.link_id')
->where('titik_closurs.id', '=', $closure)
->leftjoin('core_histories', function ($joinn) {
$joinn->on('titik_closurs.id', '=', 'core_histories.titik_id');
});
})
->groupBy('titik_closurs.id')
->get();
Он присоединяется к core_histories
к titik_closurs
НО,
- Он не показывает их как дочерний массив
- Он получает только первый
core_histories
не все.