Doctrine orm 无法使用getter方法访问通过querybuilder选择的原则2特定字段

Doctrine orm 无法使用getter方法访问通过querybuilder选择的原则2特定字段,doctrine-orm,zend-framework2,Doctrine Orm,Zend Framework2,当我使用doctrine 2查询生成器创建结果集时,如下所示: $queryBuilder = $this->orm->createQueryBuilder(); $queryBuilder->select("s.id","partial s.{id, name, user}","s.name","concat(u.firstname,' ',u.lastname) fullName") ->add('from', 'Application\Entity\Schools

当我使用doctrine 2查询生成器创建结果集时,如下所示:

$queryBuilder = $this->orm->createQueryBuilder();
$queryBuilder->select("s.id","partial s.{id, name, user}","s.name","concat(u.firstname,' ',u.lastname) fullName")
->add('from', 'Application\Entity\Schools s')
->leftJoin('s.user', 'u', 'WITH', 'u.id = s.user')
->getQuery()->getResult(Query::HYDRATE_ARRAY);
echo "<pre>";
print_r($dd);
die;
因此,当我尝试使用getter方法获取其值时:

$result->getName()不起作用,但我必须使用$result[0]->getName()

错误是这样的:

致命错误:对非对象调用成员函数getName()

如何在queryBuilder的select方法中选择特定字段,以便必须使用getter方法访问主数组值。为什么它不起作用。我的select查询有什么问题吗

如果无法使用getter方法访问特定的选定字段,有什么好处。我相信我做错了什么,但我没有想到

注意:在使用$result时,我删除了array,也就是说,我正在传递对象,因此希望getter方法能够正常工作


您遇到的问题是由于在SELECT子句中添加了其他字段引起的。这导致结果将对象放在索引0处,以便能够向结果集中添加实体中没有的其他字段,如
fullName

据我所知,您只需要有一个方法来获取每个用户的全名。与其在查询级别解决该问题,不如向
用户
实体添加一个方法:

SELECT u FROM User u
然后按照通常的方式选择用户:

$result[0]->getFullName();
现在,您可以通过以下方式获取第一个用户的全名:

这里不需要局部对象。部分对象有完全不同的用例

SELECT u FROM User u
$result[0]->getFullName();