سؤال

بالنسبة لموقع ويب أقوم ببناءه ، أحتاج إلى التحقق من وجود موقع له عقود ، يمكن أن يكون لهذه المواقع عقود مرتبطة بها مباشرة أو عندما يكون هناك جزء من منظمة أكبر أيضًا عقود مرتبطة بالمؤسسة.

أحاول استخدام استعلام 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 [...]

نرى 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