Двойной ключ массива в результате Doctrine - PullRequest
0 голосов
/ 11 августа 2010

Для веб-сайта, который я создаю, мне нужно проверить, есть ли у местоположения контракты, эти местоположения могут иметь контракты, связанные непосредственно с ними, или когда часть более крупной организации также имеет контракты, связанные с организацией.

Я пытаюсь использовать 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) { } 

}

Проблема в ключе duplicate ["Sc"], потому что в php, когда массив имеет дубликатКлючи, этот последний ключ перезаписывает первый (что я читаю в любом случае), это делает невозможным выполнение проверки вроде:

if(!empty($SC) or !empty($SC2) {}

Я не могу понять, как сделать имя доктрины одним изключи по-разному или, может быть, даже объединить два.

Я пытался использовать INDEXBY, но это изменило ключ внутри массива ['SC'], а не сам ['SC'].

Любойидеи?

1 Ответ

0 голосов
/ 13 августа 2010

Вы можете переименовать его в запросе. Так что в вашем примере это изменится только на sc_id на что-то вроде

[...] sl.sc_id AS your_new_key [...]

См. http://www.doctrine -project.org / projects / orm / 1.2 / docs / manual / dql-doctrine-query-language / en # select-запросы: агрегатные значения

...