Question

Pour un site Web que je construis, je dois vérifier si un emplacement a des contrats, ces emplacements peuvent avoir des contrats directement liés à eux ou lorsqu'une partie d'une organisation plus grande a également des contrats liés à l'organisation.

J'essaie d'utiliser une requête DQL pour vérifier d'abord s'il y a des contrats liés directement, puis s'il y en a liés via une organisation avec cette requête :

    $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();

Il fait ce que je veux dans la mesure où il renvoie un tableau avec toutes les données dont j'ai besoin :

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) { } 

}

Le problème est la clé en double ["Sc"], car en php, lorsqu'un tableau a des clés en double, cette dernière clé écrase la première (ce que j'ai lu de toute façon), cela rend impossible de faire une vérification comme :

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

Je n'arrive pas à comprendre comment faire en sorte que la doctrine nomme différemment l'une des clés ou peut-être même fusionner les deux.

J'ai essayé d'utiliser INDEXBY mais cela a changé la clé à l'intérieur du tableau ['SC'] et non ['SC'] lui-même.

Des idées?

Était-ce utile?

La solution

Vous pouvez le renommer dans la requête.Donc, dans votre exemple, cela ne changerait que sc_id à quelque chose comme

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

Voir http://www.doctrine-project.org/projects/orm/1.2/docs/manual/dql-doctrine-query-langage/en#select-queries:aggregate-values

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top