symfony mongodb odm referenceMany

symfony mongodb odm referenceMany

您好专家:我在构建查询以提取使用 '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 一起吃得最好,因此 'bestEatenWith' 是属于同一 'FoodItem' 文档的“Id”数组。

我使用的查询如下 -

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

然后使用 Twig 模板显示我得到的结果,我可以在 Twig 中显示 'name' 和 'nutrition',但我得到 'bestEatenWith' 作为“Id”的数组

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

问题 2: 我不可能在单个查询中得到类似 'bestEatenWith.name' 的结果吗?

问题 1

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

dump($result);

问题二

通常您可以从 bestEatenWith 中获取名称存在于 $result

感谢 Mohamed 的回答,您已经回答了我的部分问题。然而,我自己找到了第二部分的答案,所以这是一个完整的答案。

这是我所做的-

回答 1

  1. 按照 Mohamed 的回答使用了 dump()

答案 2

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