2017-06-22 31 views
1

我不知道爲什麼,但在幾個(不相關的)更改後,我所有的返回都是對象而不是數組。例如:Symfony教條返回對象而不是數組

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":"[email protected]","first_name"... 雖然我希望[{"email":"[email protected]","first_name"...

因此,它返回的對象中有多個對象而不是數組。

但這很奇怪,因爲我所有的函數都是返回數組的類型,而且我沒有得到任何錯誤?

+0

做一個轉儲(get_class($ items))和se它是什麼樣的對象。可能是一個實現各種數組接口的對象,這些接口又將通過數組類型測試。 – Cerad

+0

如果我這樣做,我會得到以下內部錯誤:'{「code」:500,「message」:「警告:get_class()期望參數1是對象,數組給定」}'。 有趣。 – user3634184

回答

2

試圖改變這一點:

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

這樣:

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

在這種模式下,你可以檢索陣列

或者像托馬斯Madeysk結果寫到試試這個:

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

或其他方式來實現:'getQuery() - > getArrayResult()'(引擎蓋下是一樣的) –

+0

是的,我更喜歡Query :: HYDRATE_ARRAY,但是另一個很好的解決方案! –

相關問題