I use this lines in a repository to get a list of names:
$qb = $this->createQueryBuilder('p')
->select('p.number', 'p.name', 'p.nationality', 'SUBSTRING(p.name, 1, 1) initial')
->orderBy('p.name', 'ASC');
$result = $qb->getQuery()->getArrayResult();
print_r($result)
Array (
[0] => Array ( [number] => 253 [name] => Athena [nationality] => Japan [initial] => A )
[1] => Array ( [number] => 42 [name] => Kyo [nationality] => Japan [initial] => K )
[2] => Array ( [number] => 3 [name] => Kensou [nationality] => Japan [initial] => K )
[3] => Array ( [number] => 68 [name] => Clark [nationality] => USA [initial] => C )
[4] => Array ( [number] => 58 [name] => Ralph [nationality] => USA [initial] => R )
[5] => Array ( [number] => 23 [name] => Ryo [nationality] => Spain [initial] => R ) )
And I get this result:
{"players":[
{"number":"253", "name":"Athena","nationality":"Japan","initial":"A},
{"number":"42", "name":"Kyo","nationality":"Japan","initial":"K"},
{"number":"3", "name":"Kensou","nationality":"Japan","initial":"K"},
{"number":"68", "name":"Clark","nationality":"USA","initial":"C"},
{"number":"85", "name":"Ralph","nationality":"USA","initial":"R"},
{"number":"23", "name":"Ryo","nationality":"SPAIN","initial":"R"},
]}
How can I have something like that:
{"players":[
{"A":[
{"name":"Athena", number: "253", nationality: "Japan"}
]},
{"K":[
{"name":"Kyo", number: "42", nationality: "Japan"},
{"name":"Kensou", number: "3", nationality: "Japan"}
]},
{"C":[
{"name":"Clark", number: "68", nationality: "USA"}
]},
{"R":[
{"name":"Ralph", number: "85", nationality: "USA"},
{"name":"Ryo", number: "23", nationality: "Spain"}
]},
]}
I don't know if is possible to have a similar result. I need to find a solution to get this list of names grouped by initial in json.
Thanks for help
I resolve the problem with this lines:
$playersByInitial = array();
foreach($players as $player){
$playersByInitial[$player["initial"]][] = array(
"name" => $player["name"],
"number" => $player["number"],
"nationality" => $player["nationality"]
);
}