2016-12-14 3 views
0

Bonjour experts: J'ai un problème pour construire une requête pour extraire les détails du document qui a été référencé en utilisant 'referenceMany'. Voici la configuration exemple du 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(); 
} 

L'idée est de 1 FoodItem peut être bestEatenWith autres FoodItems donc « bestEatenWith » est un tableau de « id appartenant au même « document FoodItem ».

La requête I utilisée est la suivante -

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

Le résultat que je reçois est ensuite affiché en utilisant le modèle Twig, et je peux afficher dans Brindille, le « nom » et « nutrition », mais je reçois ' bestEatenWith « comme un tableau de » Id de

question 1: Comment puis-je faire analyser par le résultat de $ en utilisant PHP et accéder au « Id de contenu dans le tableau de « bestEatenWith »?

Question 2: Puis-je obtenir quelque chose comme 'bestEatenWith.name' dans une seule requête?

Répondre

0

Merci Mohamed pour votre réponse, vous avez répondu à une partie de ma question. Cependant, j'ai trouvé la réponse moi-même à la deuxième partie, ce qui en fait une réponse complète.

Voici ce que je DID

Réponse 1

  1. Utilitaire benne() comme Mohamed a répondu

Réponse 2

  1. Utilisez le getter functi sur « getBestEatenWith » pour récupérer le tableau
  2. ensuite utilisé le foreach et utilisé la fonction getter comme getName pour récupérer le nom de bestEatenWith enregistrement
0

Question 1

Dans le contrôleur envoie le résultat avec la fonction dump:

dump($result); 

Question 2

Normalement, vous pouvez obtenir le nom de bestEatenWith existe dans $result