symfony mongodb odm referenceMany

时间:2016-12-14 01:51:02

标签: mongodb symfony 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();
}

这个想法是1 FoodItem可以和其他FoodItems一起吃得最好,因此&best;最好的吃饭'是一系列属于相同的“食物”的“ID&ID”。文档。

我使用的查询如下 -

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

然后使用Twig模板显示我得到的结果,我可以在Twig中显示' name'和'营养',但我得到了最好吃的'作为一个“Id”的数组

问题1:如何使用PHP解析$ result并访问' bestEatenWith'数组中包含的' ID? ?

问题2:我是否可能得到类似于' bestEatenWith.name'在一个查询中?

2 个答案:

答案 0 :(得分:0)

问题1

在控制器中使用dump函数转储结果:

dump($result);

问题2

通常,您可以在bestEatenWith

中找到$result中存在的名称

答案 1 :(得分:0)

感谢Mohamed的回答,你回答了我的部分问题。然而,我已经在第二部分找到了答案,这使得它成为一个完整的答案。

这是我做的 -

回答1

  1. 使用了dump()作为Mohamed回答
  2. 回答2

    1. 使用getter函数' getBestEatenWith'检索数组
    2. 然后使用foreach并使用像getName这样的getter函数来检索bestEatenWith记录的名称