0

我有一个这样的实体:

Person
  - id_person
  - name
  - child //self refering

如果我在递归函数中查询人员实体,它只会返回前三个级别。你知道如何告诉教义我想深入到需要的层次吗?

编辑

出了什么问题?
使用$queryBuilder->getquery()->getResult(Query::HIDRATE_ARRAY);不是制作递归函数的最佳方式,它应该使用默认的水合。

我如何解决它?正如@Andreas Linden 所说,
使用并调用 getter:$queryBuilder->getquery()->getResult();$parent->getChild()

4

1 回答 1

0

当您从模型 8 中访问它们时,所有关联都将被延迟加载,如果您没有将其定义为不同的行为)。所以总是使用getChild()简单的getter方法return $this->child;

您还可以根据需要左连接任意多个级别,这样您就不会生成数千个查询(每个子查询一个查询)

$query = $entityManager->createQueryBuilder()
    ->select('p1, p2, p3, p4, p5, p6')
    ->from('Entity\Person', 'p1')
    ->leftJoin('p1.child', 'p2')
    ->leftJoin('p2.child', 'p3')
    ->leftJoin('p3.child', 'p4')
    ->leftJoin('p4.child', 'p5')
    ->leftJoin('p5.child', 'p6')
    ->createQuery();
于 2012-10-02T18:28:31.940 回答