Chave de matriz duplicada no resultado da doutrina
Pergunta
Para um site que estou construindo, preciso verificar se um local possui contratos, esses locais podem ter contratos vinculados diretamente a eles ou quando parte de uma organização maior também possui contratos vinculados à organização.
Estou tentando usar uma consulta DQL para verificar primeiro se há contratos vinculados diretamente e, se houver algum vinculado por meio de uma organização com esta consulta:
$q = self::createQuery("l")
->select('sl.sc_id, sl.type, so.sc_id, so.type, l.naam, l.loc_id, l.straat, l.telefoon, l.plaats, l.postcode, l.huisnummer, l.huisnummer_achtervoegsel, o.naam')
->from('Locatie l, l.Organisatie o, l.Sc sl, o.Sc so')
->orderBy('o.naam, l.naam')
->execute();
Faz o que eu quero tanto quanto retorna uma matriz com todos os dados que eu preciso:
array(13) {
["loc_id"]=> string(2) "93" ["org_id"]=> string(1) "9" ["naam"]=> string(12) "test"
["Organisatie"]=> array(4) { ["org_id"]=> string(1) "9" ["naam"]=> string(3) "test"
["Sc"]=> array(1) { [0]=> array(6) { ["sc_id"]=> string(1) "1" ["sc_nummer"]=> NULL ["type"]=> string(6) "All-in" } } }
["Sc"]=> array(0) { }
}
O problema é a chave duplicada ["sc"], porque no PHP quando uma matriz possui teclas duplicadas, essa última chave substitui a primeira (o que eu leio de qualquer maneira), isso torna impossível fazer uma verificação:
if(!empty($SC) or !empty($SC2) {}
Não consigo descobrir como fazer o nome da doutrina uma das chaves de maneira diferente ou talvez até mesclar os dois.
Eu tentei usar INDEXBY
Mas isso mudou a chave dentro da matriz ['sc'] e não ['sc'].
Alguma ideia?
Solução
Você pode renomeá -lo dentro da consulta. Então, no seu exemplo, isso só mudaria no sc_id
para algo como
[...] sl.sc_id AS your_new_key [...]