2014-02-21 46 views
2

我想從一個實體多維數組。轉換實體到陣列中的Symfony

Symfony Serializer已經可以轉換成XML,JSON,YAML等,而不是一個數組。

我需要轉換,因爲我希望有一個乾淨的var_dump。我現在擁有很少連接的實體,完全不可讀。

我該如何做到這一點?

+0

可能重複[?如何獲得Doctrine2結果對象作爲關聯數組(http://stackoverflow.com/questions/7259256/how-to-get-a -doctrine2-result-object-as-an-associative-array) – denys281

+0

我不想得到restult作爲數組 - 我使用它作爲實體和需要在其他plaace轉換爲數組。 –

+0

調試應用程序比「var_dumps」要好得多。嘗試使用xdebug - 這個工具作爲debuger非常棒。 – Cyprian

回答

4

轉換現有的實體對象數組

使用get_object_vars() PHP函數:

在PHP控制器:

$properties = get_object_vars($entity); 
return $this->container->get('templating')->renderResponse(
    'YourOwnBundle:Entity:array.html.twig', 
    array(
     'properties' => $properties 
     ) 
    ) 
; 

在嫩枝模板:

<table> 
    {% for key, value in properties %} 
     <tr> 
      <td>{{ value }}</td> 
      <td>{{ key }}</td> 
     </tr> 
    {% endfor %} 
</table> 

注:最佳實踐是f ORMAT直接存儲庫的實體(見下文)數組形式

獲取實體從資料庫查詢

在你EntityRepository,你可以選擇你的實體,並指定要與getArrayResult()方法的數組。
欲瞭解更多信息,請參閱Doctrine query result formats documentation

public function findByIdThenReturnArray($id){ 
    $query = $this->getEntityManager() 
     ->createQuery("SELECT e FROM YourOwnBundle:Entity e WHERE e.id = :id") 
     ->setParameter('id', $id); 
    return $query->getArrayResult(); 
} 

如果所有不符合你應該去看看PHP文檔中關於ArrayAccess接口。
它檢索的屬性是這樣的:echo $entity['Attribute'];

+0

getArrayResult沒有實體轉換爲數組 - 我有實體,並希望將其轉換爲陣列 –

+0

@。 GrekHmhmm我已經更新了我的答案:**使用get_object_vars($實體)** –

+1

get_object_vars($實體)返回我的應用程序空2.6 – crafter