[英]How to convert doctrine entity (with relations) object into array (Symfony2)
[英]Symfony2: How to convert 'Doctrine->getRepository->find' from Entity to Array?
我想返回带有记录信息的\\ Symfony \\ Component \\ HttpFoundation \\ JsonResponse,但是我需要将其作为数组传递。
目前,我正在:
$repository = $this->getDoctrine()->getRepository('XxxYyyZzzBundle:Products');
$product = $repositorio->findOneByBarCode($value);
但是现在$ product是一个实体,其中包含我想要的所有内容,但作为对象。 如何将它们转换为数组?
我在某处阅读到需要使用“ Doctrine \\ ORM \\ Query :: HYDRATE_ARRAY”的信息,但似乎“ findOneBy”魔术过滤器不接受此类参数。
*
* @return object|null The entity instance or NULL if the entity can not be found.
*/
public function findOneBy(array $criteria, array $orderBy = null)
好了,感谢dbrumann,我可以使用它,只想将其添加为完整的示例即可。
似乎-> from()需要2个参数。
$em = $this->getDoctrine()->getManager();
$query = $em->createQueryBuilder()
->select('p')
->from('XxxYyyZzzBundle:Products','p')
->where('p.BarCode = :barcode')
->setParameter('barcode', $value)
->getQuery()
;
$data = $query->getSingleResult(\Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY);
当您想更改水合模式时,我建议使用QueryBuilder
:
$query = $em->createQueryBuilder()
->select('p')
->from('Products', 'p')
->where('p.BarCode = :barcode')
->setParameter('barcode', $valur)
->getQuery()
;
$data = $query->getSingleResult(\Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY);
但是可能会更好的是在模型/实体中添加toArray()
或toJson()
方法。 这样,您不需要其他代码即可检索实体,并且可以在将模型数据作为JSON传递之前进行更改,例如,格式化日期或省略不必要的属性。
如果您要使用单个实体,请执行以下两种方法:
$hydrator = new \DoctrineModule\Stdlib\Hydrator\DoctrineObject($entityManager);
$entityArray = $hydrator->extract($entity);
不得已时,您可以通过以下方法将其转换为数组,就像其他任何PHP对象一样:
$array = (array) $entity
注意:这可能会产生意想不到的结果,因为您正在使用的是教义代理类,在更高版本的教义中也可能会发生变化。
Can also be used:
$query = $em->createQueryBuilder()
->select('p')
->from('Products', 'p')
->where('p.BarCode = :barcode')
->setParameter('barcode', $valur)
->getQuery()
;
$data = $query->getArrayResult();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.