Php 错误:对非对象调用成员函数getId()

Php 错误:对非对象调用成员函数getId(),php,symfony,doctrine,entity,dql,Php,Symfony,Doctrine,Entity,Dql,我正在尝试从实体对象获取id 代码 public function findByName($name) { $qb = $this->createQueryBuilder('u'); $qb->where('u.name = :name'); $qp->setParameter('name', $name); return $qb->getQuery()->getResult(); } 我这样调用函数 $Obj = $this-&

我正在尝试从实体对象获取id

代码

public function findByName($name)
{
    $qb = $this->createQueryBuilder('u');
    $qb->where('u.name  = :name');
    $qp->setParameter('name', $name);
    return $qb->getQuery()->getResult();
}
我这样调用函数

$Obj = $this->getDoctrine()->getRepository('UserBundle:User');
$idName=$Obj->findByName('Sarah');
var_dump($idName->getId());
我得到一个关于这个部分的错误
var_dump($idName->getId())

我正在获取整个对象,我只需要Id。它不起作用

$idName
转储到此:

@array(1) {<br>
[0]=> object(UserBundle\Entity\User)#2339 (2) { <br>
["id":"UserBundle\Entity\User":private]=> int(2) ["name":"UserBundle\Entity\User":private]=> string(8) "Sarah" <br>
} }
@array(1){
[0]=>对象(UserBundle\Entity\User)#2339(2){
[“id”:“UserBundle\Entity\User”:private]=>int(2)[“name”:“UserBundle\Entity\User”:private]=>string(8)“Sarah”
} }
您的问题是,
$idName
是一个
@array(1)
,而不是一个对象。试着用这个来达到目的

var_dump($idName[0]->getId());

您的问题是,
$idName
是一个
@array(1)
,而不是一个对象。试着用这个来达到目的

var_dump($idName[0]->getId());

findBy…
始终返回已找到实体的数组(即使仅找到一个条件实体)。使用
findOneBy…
始终仅获取返回的第一个实体。

findBy…
始终返回已找到实体的数组(即使仅找到一个条件实体)。使用
findOneBy…
始终只获取返回的第一个实体。

您是否尝试过
var\u dump($idName)以确保它是一个对象?是的,我得到的是
数组(1){[0]=>对象(UserBundle\Entity\User){2339(2){[“id”:“UserBundle\Entity\User”:private]=>int(2)[“name”:“UserBundle\Entity\User”:private]=>string(5)“Sarah”}
你试过
var\u dump($idName)以确保它是一个对象?是的,我得到的是
array(1){[0]=>object(UserBundle\Entity\User){[id:“UserBundle\Entity\User”:private]=>int(2)[“name:“UserBundle\Entity\User”:private]=>string(5)“Sarah”}
没有数组,有什么东西可以得到它吗?@JooniJoon我不知道。我没有写Symfony。但是如果它返回一个数组,那么它可能会返回多个object。有没有数组就可以得到它?@JooniJoon我不知道。我没有写Symfony。但是如果它返回一个数组,那么它可能返回多个对象