我正在试图找出如何根据分层关系找到一组对象。我有3个这样的实体:
推荐 - > manyToOne - >患者 - > manyToOne - >支付者
如何找到给定付款人的所有推介?
我正在使用symfony3和mysql以及doctrine。我的实体:
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();
}
然后将它们收集到一个合适的数组中,但这看起来很混乱,我宁愿在我的存储库中的单个数据库查询中完成所有操作。可以这样做吗?
答案 0 :(得分:1)
您可以使用查询找到给定付款人的所有推介。
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();
}