Cob*_*bby 2 php doctrine mongodb
如果我有一个名为Category的文档,它嵌入了许多SubCategory文档......检索SubCategory的最佳方法是什么(例如基于ID).
使用DocumentRepository时这不起作用.我知道这是MongoDB目前的限制,我已经投票支持虚拟馆藏.
所以我想知道检索SubCategory的最佳方法是什么.我目前的方法如下:
<?php
$category = $dm->createQueryBuilder('Category')
->field('subCategories._id', new \MongoId($id))
->getQuery()->getSingleResult();
foreach($category->getSubCategories() as $sub){
if($sub->getId() === $id){
$subCategory = $sub;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
所以MongoDB的本质是你不能独立于父文件返回"子文档".因此,在检索子类别时,您必须撤回父类别,然后循环查找子对象.
在MongoDB中嵌套时,这种类型的循环更常见.因为你要获得整个文件,所以你必须准备好"向下钻取"一点.通常,这涉及编写一些小帮助方法,如您编写的方法.
您提供的代码似乎完全合理.在PHP中,我强烈建议将其包装在适当的Object上的方法中,例如Category::GetSubCategory($id).
| 归档时间: |
|
| 查看次数: |
1155 次 |
| 最近记录: |