优化学说2实体关系加载



我有专辑,内容,文件和注释实体,其中注释和文件是内容的关系,并且内容与专辑有关。

我想从单个内容实体中检索所有关系(文件和注释实体)(并且不为其他任何内容加载它们)。数据库的查询不得超过2个查询。

使用单个查询检索关系并填充实体对象的好方法是什么?

例如

$album = $em->createQuery('SELECT a,c FROM Album JOIN a.contents c WHERE a.id = :id')->getOneOrNullResult();
foreach ($album->getContents() as $content) {
    if ($content->getId() == $id) {
         // Load all (relevant) relations for this content in a single query with joins
         $em->MAGIC($content);
    }
}

我找到了解决方案。通过定义内容,以便它当时只能是单个专辑的成员 - 我可以通过内容加入专辑:

$dql = 'SELECT a,c,cc,cf,ac FROM Content c JOIN c.album a JOIN a.content ac JOIN c.comments cc JOIN c.file cf WHERE c.id = :id'

然后学说2魔术确保返回的内容也在$album->contents属性中引用相同的对象。

最终结果,是一个查询。

相关内容

  • 没有找到相关文章

最新更新