我在我的存储库中有这个功能:
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
不是对象,为什么会这样?
答案 0 :(得分:3)
如果您使用主键查询或只是希望检索单个对象,则应使用
$qb->getQuery()->getSingleResult();
请注意此函数会抛出NoResultException