我想在数组中获取此代码的结果:
$person = $em->find('Person', 2);
我正在使用原则2。 我想要数组形式的上述结果。.
PHP 版本 5.4
最好的方法是在存储库类中编写方法或内联创建查询生成器(但不建议这样做(。
use DoctrineORMQuery;
...
$qb = $em->getRepository(Person::class)->createQueryBuilder('p');
$qb
->andWhere('p.id = :id')
->setParameter('id', $id)
;
$person = $qb->getQuery()->getResult(Query::HYDRATE_ARRAY);
取代
$qb->getQuery()->getResult(Query::HYDRATE_ARRAY)
由
$qb->getQuery()->getOneOrNullResult(Query::HYDRATE_ARRAY)
如果你只需要获取一个元素。
我找到了一个解决方案:
$person = $em->find('Person', 2);
$personx = json_decode(json_encode((array)$person), true);
echo '<pre>';
print_r($personx);
echo '<pre>';
它对我来说非常有效。
由于$person可能是带有循环引用的对象,因此不能直接转换为数组,但您可以使用序列化,就像这里描述的那样Symfony Serialize doctrine entity
或者您可以手动执行此操作:
$person_array = ['name' => $person->getName(), 'id' => $person->getId()];