Dev*_*per 2 php symfony doctrine-orm
我正试图从实体中获取一个多维数组.
Symfony Serializer已经可以转换为XML,JSON,YAML等,但不能转换为数组.
我需要转换,因为我想干净var_dump.我现在有几个连接的实体,完全不可读.
我怎样才能做到这一点?
Sky*_*123 13
您实际上可以使用内置序列化器将学说实体转换为数组。实际上我今天刚刚写了一篇关于此的博客文章: https ://skylar.tech/detect-doctrine-entity-changes-without/
您基本上调用标准化函数,它会给您您想要的:
$entityAsArray = $this->serializer->normalize($entity, null);
Run Code Online (Sandbox Code Playgroud)
我建议检查我的帖子以获取有关某些怪癖的更多信息,但这应该完全符合您的要求,而无需任何额外的依赖项或处理私有/受保护的字段。
显然,可以将对象强制转换为如下所示的数组:
<?php
class Foo
{
public $bar = 'barValue';
}
$foo = new Foo();
$arrayFoo = (array) $foo;
var_dump($arrayFoo);
Run Code Online (Sandbox Code Playgroud)
这将产生类似于:
array(1) {
["bar"]=> string(8) "barValue"
}
Run Code Online (Sandbox Code Playgroud)
如果您有私有和受保护的属性,请访问以下链接: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();
}
Run Code Online (Sandbox Code Playgroud)
如果所有这些都不合适,请参阅有关ArrayAccess接口的PHP文档.
它以这种方式检索属性:echo $entity['Attribute'];
| 归档时间: |
|
| 查看次数: |
24828 次 |
| 最近记录: |