Symfony2 + Doctrine + Repository:这个函数不应该返回对象而不是数组

时间:2014-03-25 15:55:38

标签: php symfony doctrine-orm

我在我的存储库中有这个功能:

public function findLatestFeeAsigned($company_id) {
    $qb = $this->getEntityManager()->createQueryBuilder();

    $qb->select('c', 'chw');
    $qb->from('Configuration\FeeBundle\Entity\Fee', 'c');
    $qb->leftJoin('Company\ApprovalBundle\Entity\CompanyHasWtax', 'chw', \Doctrine\ORM\Query\Expr\Join::WITH, 'c.id = chw.wtax');
    $qb->where('chw.company = ?1');
    $qb->orderBy('chw.created', 'ASC');
    $qb->setMaxResults(1);
    $qb->setParameter(1, $company_id);

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

我以这种方式从我的控制器中调用它:

$entityCurrentFee = $em->getRepository('ApprovalBundle:CompanyHasWtax')->findLatestFeeAsigned($id);

其中$id是请求参数。然后我尝试将一些列值作为:

$entityCurrentFee->getId();

但是我收到错误,说$entityCurrentFee不是对象,为什么会这样?

1 个答案:

答案 0 :(得分:3)

如果您使用主键查询或只是希望检索单个对象,则应使用

$qb->getQuery()->getSingleResult();

请注意此函数会抛出NoResultException