我想在此代码的数组中得到结果:
$person = $em->find('Person', 2);
我正在使用学说2.我希望以数组形式提供上述结果。
PHP版本5.4
答案 0 :(得分:2)
最好的方法是在Repository类中编写方法或内联创建查询构建器(但不建议这样做)。
use Doctrine\ORM\Query;
...
$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)
如果你只需要一个元素。
答案 1 :(得分:1)
我找到了一个解决方案:
$person = $em->find('Person', 2);
$personx = json_decode(json_encode((array)$person), true);
echo '<pre>';
print_r($personx);
echo '<pre>';
它对我来说很完美。
答案 2 :(得分:0)
由于$ person可能是循环引用的对象,因此无法直接转换为数组,但您可以使用序列化,就像此处所述 Symfony Serialize doctrine entity
或者你可以手动完成:
$person_array = ['name' => $person->getName(), 'id' => $person->getId()];