我有一个使用此方法的存储库:
public function getCountryId($code_2a)
{
return $this
->createQueryBuilder('e')
->andWhere('e.code2a = :code_2a')
->setParameter('code_2a', $code_2a)
->getQuery()
->execute();
}
和一个有这个电话的控制器:
$country = $em->getRepository('AppBundle:Countries')->getCountryId('GB');
据我所知,在美元国家,我会有一个实体,其中包含表格记录的数据,在这种情况下为“英国”。
但如果我在控制器中:
$country_id = $country->getId();
我得到一个例外:
Error: Call to a member function getId() on array
这让我很困惑。我怎样才能获得该国的$id
?
答案 0 :(得分:4)
您的查询返回一个包含对象的数组,因此,如果您希望只接收一个对象,则必须使用getOneOrNullResult
更改查询
public function getCountryId( $code_2a )
{
return $this
->createQueryBuilder('e')
->andWhere('e.code2a = :code_2a')
->setParameter('code_2a', $code_2a)
->getQuery()
->getOneOrNullResult()
;
}
答案 1 :(得分:0)
在控制器中
$country = $em->getRepository('AppBundle:Countries')->findOneByCode2a('GB');
if($country) {
$country_id = $country->getId();
}
返回一个对象Country。如果使用findBy,则返回带有对象的数组。