在Symfony(doctrine)中按条件查询相关实体



对于这个问题,你需要知道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::filterLoan 类上创建一个额外的方法:

public function getActiveCharges()
{
    return $this->getCharges()->filter(function (Charge $charge) {
        return $charge->getIsActive() === true;
        //or you can omit '=== true'
        return $charge->getIsActive();
    });
}

相关内容

  • 没有找到相关文章

最新更新