小编Vin*_*ard的帖子

Symfony Doctrine Hydrator - 使用定制水化器我失去了 ManyToOne 关系

我想扩展 ObjectHydrator 以受益于我的 ManyToOne 关系的水合并向实体添加额外的字段。

这是我的水合器:StatisticsDataHydrator.php

namespace AppBundle\Hydrator\ProjectAssignment;

use AppBundle\Entity\ProjectAssignment;
use Doctrine\ORM\Internal\Hydration\ObjectHydrator;

    class StatisticsDataHydrator extends ObjectHydrator
    {
        /**
         * {@inheritdoc}
         */
        protected function hydrateRowData(array $data, array &$result)
        {
            $hydrated_result = array();
            parent::hydrateRowData($data, $hydrated_result);

            /** @var ProjectAssignment $project_assignment */
            $project_assignment = $hydrated_result[0][0];

            $result[] = $project_assignment;
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是我的配置:config.yml

doctrine:
    orm:
        hydrators:
            project_assignment_statisticsdata_hydrator: AppBundle\Hydrator\ProjectAssignment\StatisticsDataHydrator
Run Code Online (Sandbox Code Playgroud)

在我不使用保湿器的情况下,我没有问题:

/**
 * @param ProjectStage $stage
 * @return array
 */
public function findByStageWithStatisticsData(ProjectStage $stage){
    $qb = $this->createQueryBuilder('pa');

    $qb
        //->addSelect('44')
        ->where($qb->expr()->eq('pa.project_stage', ':stage'))
        ->setParameter('stage', $stage);

    return $qb->getQuery()->getResult();
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但当我使用保湿器时:

/** …
Run Code Online (Sandbox Code Playgroud)

doctrine many-to-one symfony doctrine-orm hydration

4
推荐指数
2
解决办法
7977
查看次数

标签 统计

doctrine ×1

doctrine-orm ×1

hydration ×1

many-to-one ×1

symfony ×1