質問

私が構築しているウェブサイトの場合、場所に契約がある場合、これらの場所には契約が直接リンクされている場合、またはより大きな組織の一部が組織にリンクされている契約もある場合に契約を結ぶことができます。

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

教義の名前を異なる方法で、または2つを融合させる方法を把握する方法を理解できないようです。

使ってみました INDEXBY しかし、それは['sc']自体ではなく、['sc']配列内のキーを変更しました。

何か案は?

役に立ちましたか?

解決

クエリ内で名前を変更できます。したがって、あなたの例では、それは 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-queries:aggregate-values

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top