Asked by: vl14b
is it possible to group/rearrange JSON output from laravel ? i want to group it before it send to view by system, so i need it to be done in server side not client side.
Lets said i have JSON structured like this :
id, name, date
or in example, is like this :
[[
{"id" : "1", "name" : "A", "date" : "2017-01-01"},
{"id" : "2", "name" : "B", "date" : "2017-01-01"},
{"id" : "3", "name" : "C", "date" : "2017-01-01"},
{"id" : "4", "name" : "D", "date" : "2018-01-01"},
{"id" : "5", "name" : "E", "date" : "2018-01-01"},
]]
is it possible to group it to be something like this ?
[
{"2017-01-01":[
{"id":"1","name":"A"},
{"id":"2","name":"B"},
{"id":"3","name":"C"}
]},
{"2018-01-01":[
{"id":"4","name":"D"},
{"id":"5","name":"E"},
]},
]
(In case you need to look my JSON Controller) This is my JSON Controller :
public function harga($id)
{
$harga = harga::whereHas('produk', function ($query) use($id) {
$query->where('id',$id);
})->get();
return response()->json([$harga],200);
}
Thanks !
Answers
Answered by: Saurav at 2017-07-11 03:32PM Accepted
use groupBy on your query:
public function harga($id)
{
$harga = harga::whereHas('produk', function ($query) use($id) {
$query->where('id',$id);
})->get()->groupBy(column_name_you_want_to_group_by);
return response()->json([$harga],200);
}
Answered by: Michael Chen at 2017-07-11 03:32PM
You can use groupBy
method to do it:
return response()->json($harga->groupBy('date'), 200);
Answered by: Shams Reza at 2017-07-11 04:10PM
In Controller it is possible to do that as below
js = "your json";
$jsArray = json_decode($js, true);
$jsArray = $jsArray[0];
$newJsArr = [];
foreach ($jsArray as $j) {
$newJsArr[$j['date']][] = ["id" => $j['id'], "name" => $j['name']];
}
$newJsArr = json_encode([$newJsArr]);
No comments:
Post a Comment