0

各位晚上好。

请帮我解决我的 Doctrine/Mongo 问题。

我有一个文档,它有一个指向另一个文档的 ReferenceOne 和一个指向另一个文档的 ReferenceMany。

所以我需要运行一个查询来为我的第一个文档获取完整的文档树作为关联数组。

我正在尝试这样做:

return $this->createQueryBuilder()
        ->field('category')->references($category)
        ->field('vendor')->prime()
        ->field('chars')->prime()
        ->hydrate(false)
        ->getQuery()
        ->execute();

但结果我得到这样的数组:

Array
(
[0] => Array
    (
        [_id] => MongoId Object
            (
                [$id] => 52e374c21c83735f098b4567
            )

        [category] => Array
            (
                [$ref] => Category
                [$id] => MongoId Object
                    (
                        [$id] => 52dc56eb1c837345098b4567
                    )

                [$db] => doctrine
            )

        [chars] => Array
            (
                [0] => Array
                    (
                        [$ref] => ProductChar
                        [$id] => MongoId Object
                            (
                                [$id] => 52e374c21c83735f098b4568
                            )

                        [$db] => doctrine
                    )

                [1] => Array
                    (
                        [$ref] => ProductChar
                        [$id] => MongoId Object
                            (
                                [$id] => 52e374c21c83735f098b4569
                            )

                        [$db] => doctrine
                    )

            )

        [href] => href-test
        [price] => 500
        [title] => test
        [vendor] => Array
            (
                [$ref] => Vendor
                [$id] => MongoId Object
                    (
                        [$id] => 52e170571c837360098b4567
                    )

                [$db] => doctrine
            )

    )

)

但我不仅需要引用文档的 ID,还需要所有值。

所以现在我不知道如何检索整个文档数组树。

谢谢大家!

4

1 回答 1

3

启动需要水合作用。如果您进行调查Query::execute(),您会发现如果禁用了水合作用,它会突然返回。如果启用了水合,则在该方法中稍后将进行引物处理。我创建了#800以确保我们记录此限制,因为在Priming References中没有讨论它。将来可能会实现对启动的支持,但我们目前没有任何计划。

于 2014-02-10T19:58:14.910 回答