I'm trying to get a multi-dimensional array from an Entity.
Symfony Serializer can already convert to XML, JSON, YAML etc. but not to an array.
I need to convert because I want have a clean var_dump. I now have entity with few connections and is totally unreadable.
How can I achieve this?
解决方案
Convert existing entity object to array
Use get_object_vars() PHP function :
In PHP Controller :
$properties = get_object_vars($entity);
return $this->container->get('templating')->renderResponse(
'YourOwnBundle:Entity:array.html.twig',
array(
'properties' => $properties
)
)
;
In TWIG Template :
{% for key, value in properties %}
{{ value }}{{ key }}{% endfor %}
Note : Best practice is to format your entity in repository directly (see below)
Get entity in array format from repository query
In your EntityRepository you can select your entity and specify you want an array with getArrayResult() method.
For more informations see 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();
}
If all that doesn't fit you should go see the PHP documentation about ArrayAccess interface.
It retrieves the attributes this way : echo $entity['Attribute'];