[英]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.