对于这个问题,你需要知道2个实体:
贷款和收费。 一笔贷款有多个费用。
因此,在我的控制器中,我正在查询每个实体,它似乎很蹩脚。
$query = $this->getDoctrine()
->getRepository('AppBundle:Loan')
->find($id);
$query1 = $em->createQuery(
'SELECT p
FROM AppBundle:Charge p
WHERE p.loanId = :loanId
AND p.isActive = true
')->setParameter('loanId', $id);
我想使用关系更好地转换 query1。
所以,从我的角度来看,它必须是这样的:
foreach($query->getCharges() as $charge) {
if($charge->getIsActive() == true) {
//what to put here?
}
}
如果条件通过,如何从我的第一个代码中获取来自数据库的相同对象?
您可以在使用 ArrayCollections::filter
的 Loan
类上创建一个额外的方法:
public function getActiveCharges()
{
return $this->getCharges()->filter(function (Charge $charge) {
return $charge->getIsActive() === true;
//or you can omit '=== true'
return $charge->getIsActive();
});
}