![](/img/trans.png)
[英]Return an associative array with certain key for a findBy doctrine repository function
[英]symfony doctrine-> findBy(), Can I return a parsable PHP array without using the repository method?
如果使用此方法检索数据,则无法像$data[0]['string']
这样在PHP中对其进行解析。 PHP只是说这是一个Object
,不能将其解析为Array
错误信息
Cannot use object of type App\\Entity\\MyEntity as array
控制器代码:
$data = $this->em
->getRepository(Myclass::class)
->findBy(['foo' => $var]);
我如何直接从控制器直接从简单的findBy()
返回可解析数组,而不必通过->getArrayResult()
遍历存储库和QueryBuilder?
您需要做的就是在存储库中创建自定义函数:
public function findItByFoo($var){
$qb = $this->createQueryBuilder('myClass');
$qb->select("myClass")
->where('foo = :var')
->setParameter('var', $var);
$result = $qb->getQuery()->getArrayResult();
return $result;
}
您无法使用内置的findBy方法实现此目的。 更具体地说,findBy定义为:
$repository->findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null);
如您所见,水合模式没有任何论据。
最后,由于要将实体化为数组而不是对象,并且希望在控制器中做到这一点,因此唯一的解决方案是这样的:
$data = $this->em->getRepository(Myclass::class)->createQueryBuilder('m')
->select("m")->where('foo = :var')->setParameter('var', $var)
->getQuery()->getArrayResult();
如您所见,它与我上面编写的findItByFoo()函数中的代码几乎相同,我只是想标记一下您也可以在控制器中做到这一点(以编程方式来说,甚至不建议这样做)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.