我试图找出如何基于分层关系找到一组对象。我有3个实体,如下所示:

转诊-> manyToOne->患者-> manyToOne->付款人

如何找到给定付款人的所有推荐人?

我正在将symfony3与mysql和主义一起使用。我的实体:

class Referral
{
    // usual stuff

    /**
     * @ORM\ManyToOne(targetEntity="Patient")
     */
    private $patient;
}

class Patient
{
    // usual stuff

    /**
     * @ORM\ManyToOne(targetEntity="Payor")
     */
    private $payor;
}

class Payor
{
    // usual stuff
}


显然,例如,我可以使关系成为双向的,这样我就可以在控制器中执行以下操作:

$patients = $payor->getPatients();
foreach ($patients as $patient) {
    $referrals = $patient->getReferrals();
}


然后将它们收集到适当的数组中,但这似乎很混乱,我宁愿在存储库中的单个数据库查询中全部完成。能做到吗?

最佳答案

您可以使用查询找到给定付款人的所有推荐人。

在ReferralRepository中

public function findReferralsByPayor(Payor $payor)
{
    $qb = $this->createQueryBuilder('r');

    $qb
        ->join('BUNDLENAME:Patient', 'p', 'WITH', 'p.id = r.patient')
        ->where('p.payor = :payor')->setParameter('payor', $payor)
        ;

    return $qb->getQuery()->getResult();
}

09-25 17:50