Doctrine MongoDB参考水合物假和素

时间:2014-01-25 17:17:39

标签: php mongodb doctrine-orm doctrine-odm odm

大家晚上好。

请帮助我解决我的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,还需要所有值。

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

提前谢谢大家!

1 个答案:

答案 0 :(得分:3)

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