Arrays Symfony原则返回对象而不是数组
我不知道为什么,但经过几次(不相关的)更改后,我所有的返回都是对象而不是数组。例如: ReceiptController.phpArrays Symfony原则返回对象而不是数组,arrays,symfony,object,doctrine-orm,Arrays,Symfony,Object,Doctrine Orm,我不知道为什么,但经过几次(不相关的)更改后,我所有的返回都是对象而不是数组。例如: ReceiptController.php /** * Get all receipts for the team. * * @param String $id * @return array * * @SWG\Response( * response=201, * description="Get all receipt for the team.", * @SWG\
/**
* Get all receipts for the team.
*
* @param String $id
* @return array
*
* @SWG\Response(
* response=201,
* description="Get all receipt for the team.",
* @SWG\Schema(
* type="array"
* )
* )
*/
public function getTeamReceiptsAction($id): array
{
$parameterBag = [
'teamId' => $id
];
$items = $this->manager->getAll($parameterBag);
return $items;
}
接收库
/**
* @inheritdoc
*/
public function getFilterQuery($parameterBag): QueryBuilder
{
$qb = $this
->createQueryBuilder('s')
;
if (isset($parameterBag['id'])) {
$qb->andWhere('s.id=(:id)')
->setParameter('id', $parameterBag['id']);
}
if (isset($parameterBag['teamId'])) {
$qb->andWhere('s.team=(:team)')
->setParameter('team', $parameterBag['teamId']);
}
return $qb;
}
/**
* @inheritdoc
*/
public function getAll($parameterBag): ?array
{
$qb = $this->getFilterQuery($parameterBag);
return $qb->getQuery()->getResult();
}
返回:
{“0”:{“电子邮件”:admin@benj.be“,”名字“…
虽然我希望[{“email”:admin@benj.be“,”名字“…
因此,它返回一个包含多个对象的对象,而不是一个数组
但这很奇怪,因为我所有的函数都被键入以返回数组的,而且我没有收到任何错误?尝试更改以下内容:
return $qb->getQuery()->getResult();
为此:
return $qb->getQuery()->getResult(Query::HYDRATE_ARRAY);
在此模式下,您可以在数组中检索结果
或者,正如托马斯马德伊斯克所写的那样,试试这个:
return $qb->getQuery()->getArrayResult()
执行转储(get_class($items))并查看它是什么类型的对象。可能是实现各种数组接口的对象,而这些接口又将通过数组类型测试。如果这样做,则会出现以下内部错误:
{“code”:500,“message”:“警告:get_class()希望参数1是object,数组给定”}
。有趣。或者另一种方法:getQuery()->getArrayResult()
(在引擎盖下也是一样)是的,我更喜欢Query::水合物数组,但这是另一个很好的解决方案!