Convert Entity to array in Symfony

2019-07-11 03:24发布

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?

1条回答
疯言疯语
2楼-- · 2019-07-11 03:47

Apparently, it is possible to cast objects to arrays like following:

<?php

class Foo
{
    public $bar = 'barValue';
}

$foo = new Foo();

$arrayFoo = (array) $foo;

var_dump($arrayFoo);

This will produce something like:

array(1) {
    ["bar"]=> string(8) "barValue"
}

If you have got private and protected attributes see this link : https://ocramius.github.io/blog/fast-php-object-to-array-conversion/

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'];

查看更多
登录 后发表回答