用DoctrineHydrator连接水合物

时间:2014-10-03 06:03:30

标签: doctrine-orm doctrine

有可能吗?

    $hydrator = $this->getServiceLocator()->get('DoctrineHydrator');
    $hydrator->hydrate((array) $data, $PlatformEntity);

保湿剂仅含有1级阵列。

1 个答案:

答案 0 :(得分:0)

阵列保湿不是实现这种情况的最佳方式。这里的情况相同:

Person
  - id_person
  - name
  - child //self refering

数组水合只选择第一级。我解决它采取这两个选项之一:

  1. 使用left join关联

    $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();
    

    然后,使用数组水合作用。

  2. 创建自己的递归函数,以手动添加数组中的每个元素。