gpt4 book ai didi

php - Symfony2 : How to convert 'Doctrine->getRepository->find' from Entity to Array?

转载 作者:可可西里 更新时间:2023-11-01 12:27:43 24 4
gpt4 key购买 nike

我想返回一个包含记录信息的\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 传递之前更改模型的数据,例如格式化日期或省略不必要的属性。

关于php - Symfony2 : How to convert 'Doctrine->getRepository->find' from Entity to Array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24147056/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com