2016-12-14 2 views
0

Hallo Experten: Ich habe ein Problem beim Erstellen einer Abfrage zum Extrahieren von Details des Dokuments, das mit 'referenceMany' referenziert wurde. Hier ist das Beispiel Aufbau des Codesymfony mongodb odm referenceMany

class FoodItem{ 

    /** 
    * @MongoDb\Id 
    */ 
    protected Id; 

    /** 
    * @MongoDb\field(type="string") 
    */ 
    protected name; 

    /** 
    * @MongoDb\field(type="float") 
    */ 
    protected calories; 

    /** 
    * @MongoDb\ReferenceMany(targetDocument="FoodItem", storeAs="id") 
    */ 
    protected $bestEatenWith = array(); 
} 

Die Idee ist, 1 FoodItem bestEatenWith andere FoodItems sein kann, daher ‚bestEatenWith‘ ist ein Array von ‚Id Zugehörigkeit zu demselben‚FoodItem‘Dokument.

Die Abfrage I wird wie folgt verwendet -

$qb = $dm->createQueryBuilder('AppBundle:FoodItem') 
     ->select("name", "bestEatenWith", "nutrition") 
     ->eagerCursor(true) 
     ->hydrate(false); 
    $query = $qb->getQuery(); 
    $result = $query->execute(); 

Das Ergebnis erhalte ich dann Zweig Vorlage angezeigt wird verwendet, und ich kann in Zweig, der ‚Name‘ und ‚Ernährung‘ angezeigt werden, aber ich habe ' bestEatenWith 'als ein Array von' Ids

Frage 1: Wie parse ich durch $ Ergebnis mit PHP und Zugriff auf die 'IDs im Array von' BestEatenWith 'enthalten?

Frage 2: Kann ich vielleicht nicht so etwas wie ‚bestEatenWith.name‘ in einer einzigen Abfrage bekommen?

Antwort

0

Danke Mohamed für deine Antwort, du hast einen Teil meiner Frage beantwortet. Allerdings habe ich die Antwort selbst auf den zweiten Teil gefunden, so dass es eine vollständige Antwort gibt. Hier

ist, was ich DID

Antwort 1

  1. Gebrauchte dump() als Mohamed beantwortet

Antwort 2

  1. Verwenden Getter Funktionen auf ‚getBestEatenWith‘ das Array
  2. dann die foreach verwendet abzurufen, und verwendet, um den Getter-Funktion wie getName den Namen des Datensatzes bestEatenWith
zurückzuholen
0

Frage 1

In der Steuerung das Ergebnis mit der dump Funktion Dump:

dump($result); 

Frage 2

Normalerweise können Sie den Namen bekommen von bestEatenWith

in $result existiert
Verwandte Themen