Arrays Symfony原则返回对象而不是数组

Arrays 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\

我不知道为什么,但经过几次(不相关的)更改后,我所有的返回都是对象而不是数组。例如:

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\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::水合物数组,但这是另一个很好的解决方案!