Дублирующаяся клавиша массива в результате доктрины
Вопрос
Для веб-сайта, который я здаю, мне нужно проверить, где есть контракты, эти места могут иметь контракты, связанные с ними, или когда есть часть более крупной организации также имеет контракты, которые связаны с организацией.
Я пытаюсь использовать запрос DQL для первого чека, если есть контракты, связанные напрямую, а затем, если есть связанные через организм с этим запросом:
$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();
Это делает то, что я так хочу, чтобы он возвращает массив со всеми нужными данными:
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) { }
}
Проблема является ключом к дубликату [«SC»], потому что в PHP, когда массив имеет дублирующие клавиши, этот последний ключ перезаписывает первое (что я все равно читаю), это делает невозможным чек, как:
if(!empty($SC) or !empty($SC2) {}
Я не могу понять, как сделать доктрину имя одного из клавиш иначе или, возможно, даже объединить два.
Я пытался использовать INDEXBY
Но это изменило ключ внутри массива ['SC'], а не [SC '] самого.
Любые идеи?
Решение
Вы можете переименовать его в запросе. Так что в вашем примере это было бы только изменять sc_id
к чему-то вроде
[...] sl.sc_id AS your_new_key [...]