symfony2自定义实体到数组函数

时间:2015-04-16 12:00:18

标签: arrays symfony entity

我必须帮助我将实体转换为数组,但我有解决相关记录的问题,这是我需要的。

然而,这给了我一个错误

  

在“。”中找不到“Doc​​trine \ ORM \ PersistentCollection”类   链配置的命名空间......

代码如下:

public function serialize($entityObject)
{
$data = array();

$className = get_class($entityObject);
$metaData = $this->entityManager->getClassMetadata($className);

foreach ($metaData->fieldMappings as $field => $mapping)
{
    $method = "get" . ucfirst($field);
    $data[$field] = call_user_func(array($entityObject, $method));
}

foreach ($metaData->associationMappings as $field => $mapping)
{

    // Sort of entity object
    $object = $metaData->reflFields[$field]->getValue($entityObject);

        if ($object instanceof ArrayCollection) {
            $object = $object->toArray();
        }
        else {
            $data[$field] = $this->serialize($object);
        }

}

return $data;
}

如何将相关字段解析为各自的数组。

我尝试过使用内置和JMS序列化程序,但是这给了我嵌套限制的问题,所以这不是我的选择。

更新: 我根据@ ScayTrase的建议更新了代码以处理ArrayCollection的实例。但是,仍然会使用一对多字段映射报告上述错误。在debug中,变量$ object的类型为“Doctrine \ ORM \ PersistentCollection”

1 个答案:

答案 0 :(得分:1)

对于使用*toMany实施的ArrayCollection关联属性,您应首先调用ArrayCollection::toArray()。只需使用instanceof进行检查,就像这样

if ($object instanceof ArrayCollection) {
    $object = $object->toArray();
}