我正在尝试从实体获取多维数组。
Symfony Serializer 已经可以转换为 XML、JSON、YAML 等,但不能转换为数组。
我需要转换,因为我想要一个干净的 var_dump
。我现在拥有的实体几乎没有联系,而且完全不可读。
我怎样才能做到这一点?
原文由 Developer 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在尝试从实体获取多维数组。
Symfony Serializer 已经可以转换为 XML、JSON、YAML 等,但不能转换为数组。
我需要转换,因为我想要一个干净的 var_dump
。我现在拥有的实体几乎没有联系,而且完全不可读。
我怎样才能做到这一点?
原文由 Developer 发布,翻译遵循 CC BY-SA 4.0 许可协议
显然,可以将对象转换为数组,如下所示:
<?php
class Foo
{
public $bar = 'barValue';
}
$foo = new Foo();
$arrayFoo = (array) $foo;
var_dump($arrayFoo);
这 将产生 如下内容:
array(1) {
["bar"]=> string(8) "barValue"
}
如果您有私有和受保护的属性,请参阅此链接: https ://ocramius.github.io/blog/fast-php-object-to-array-conversion/
在您的 EntityRepository 中,您可以选择您的实体并使用 getArrayResult()
方法指定您想要的数组。
有关更多信息,请参阅 Doctrine 查询结果格式文档。
public function findByIdThenReturnArray($id){
$query = $this->getEntityManager()
->createQuery("SELECT e FROM YourOwnBundle:Entity e WHERE e.id = :id")
->setParameter('id', $id);
return $query->getArrayResult();
}
如果所有这些都不适合,您应该查看有关 ArrayAccess 接口的 PHP 文档。
它以这种方式检索属性: echo $entity['Attribute'];
原文由 Antoine Subit 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答3.1k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
2 回答1.2k 阅读
1 回答1.2k 阅读
1 回答1k 阅读
您实际上可以使用内置的序列化程序将学说实体转换为数组。事实上,我今天刚刚写了一篇关于这个的博客文章: https ://skylar.tech/detect-doctrine-entity-changes-without/
你基本上调用了 normalize 函数,它会给你你想要的:
我建议查看我的帖子以获取有关某些怪癖的更多信息,但这应该完全按照您的意愿进行,而无需任何其他依赖项或处理私有/受保护字段。