如何访问继承实体(Symfony3)中的链接实体?

时间:2018-07-27 11:55:00

标签: inheritance doctrine symfony3.x

我有两个实体:Rdv和RdvAnethetist扩展了Rdv。

@ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="typeRdv", type="string")
 * @ORM\DiscriminatorMap({"simple" = "Rdv", "anesthetist" = "RdvAnesthetist"})
 */
class Rdv{
...}
class RdvAnesthetist extends Rdv {
    /**
     * @var \DateTime
     * @Assert\Date()
     * @ORM\Column(name="DateSurgery", type="date", nullable=true)
     */
    private $dateSurgery;
    /**
    * @ORM\ManyToOne(targetEntity="XMP\CalendarBundle\Entity\Surgeon" )
    * @ORM\JoinColumn(nullable=false)
    */
    private $surgeon;
}

如果Rdv是RdvA,我正在尝试查询包含数组结果的数据外科医生

class RdvRepository extends \Doctrine\ORM\EntityRepository
{
    public function getAllRdv($date){
        $qb = $this->createQueryBuilder('r');
        $qb->setParameter('date', $date, \Doctrine\DBAL\Types\Type::DATETIME);
        return $qb->getQuery()->getArrayResult();

    }

通过这种方式,我可以访问field dateSurgery,但不能访问field外科医生。 Symfony自动添加与表RdvA的关系,但仅添加不具有关系的字段。 我试图在查询中手动添加关系RdvAnesthetist。

$qb->leftJoin('XMPCalendarBundle:RdvAnesthetist', 'rdva','WITH','r.id=rdva.id')
            ->leftJoin('rdva.surgery','surg')
            ->addSelect('surg');

在sql manager中可以,但是在查询结果中,手术不会出现在数组中。 我尝试过

$qb->leftJoin('XMPCalendarBundle:RdvAnesthetist', 'rdva','WITH','r.id=rdva.id')
                ->leftJoin('rdva.surgery','surg')
                ->addSelect('rdva')
                ->addSelect('surg');

但是现在我对同一实体在数组结果中有2个元素,其中一个进行手术,一个不进行。

使用getResult()可以,但是我需要getArrayResult()导致大量数据。我只需要显示数据并且不需要更新,我不需要实体,只需数组。

谢谢

0 个答案:

没有答案