1
내 ManyToOne 관계의 수분 효과를 위해 ObjectHydrator를 확장하고 Entity에 추가 필드를 추가하고 싶습니다. 여기 Symfony Doctrine Hydrator - 사용자 화수기를 사용하면 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;
}
}
내 설정이다 :
: 나는 아무런 문제가없는 하이드 레이터를 사용하지 않는 config.ymldoctrine:
orm:
hydrators:
project_assignment_statisticsdata_hydrator: AppBundle\Hydrator\ProjectAssignment\StatisticsDataHydrator
/**
* @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();
}
하지만 내 하이드 레이터를 사용할 때 :
/**
* @param ProjectStage $stage
* @return array
*/
public function findByStageWithStatisticsData(ProjectStage $stage){
$qb = $this->createQueryBuilder('pa');
$qb
->addSelect('1234') // referencial value
->where($qb->expr()->eq('pa.project_stage', ':stage'))
->setParameter('stage', $stage);
return $qb->getQuery()->getResult('project_assignment_statisticsdata_hydrator');
}
는
이상한 행동이이 설정과 같은 발생 시킬수 있음 : config.yml 나는 모든 시도
doctrine:
orm:
hydrators:
project_assignment_statisticsdata_hydrator: Doctrine\ORM\Internal\Hydration\ObjectHydrator
의 종류 가져 오기 성공과 관련하여 :
@ORM\ManyToOne(... , fetch="EAGER")
@ORM\ManyToOne(... , fetch="LAZY")
...
아마 내 엔터티에 프록시를 사용해야 만합니다. (
어떤 도움을 주셔서 감사합니다!