Symfony doctrine返回对象而不是数组

时间:2017-06-22 12:00:29

标签: 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\Schema(
 *         type="array"
 *     )
 * )
 */
public function getTeamReceiptsAction($id): array
{
    $parameterBag = [
        'teamId' => $id
    ];

    $items = $this->manager->getAll($parameterBag);

    return $items;
}

Receiptrepository

/**
 * @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":{"email":"admin@benj.be","first_name"... 虽然我期待[{"email":"admin@benj.be","first_name"...

因此它返回一个包含多个对象而不是数组的对象。

但这很奇怪,因为我输入的所有函数都是为了返回数组,而且我没有收到任何错误?

1 个答案:

答案 0 :(得分:2)

尝试改变这个:

return $qb->getQuery()->getResult();

到此:

return $qb->getQuery()->getResult(Query::HYDRATE_ARRAY);

在此模式下,您可以检索数组中的结果

或者像Tomasz Madeysk写的那样试试这个:

return $qb->getQuery()->getArrayResult()