如何将Doctrine 2结果作为关联数组?

时间:2018-01-12 14:16:27

标签: php arrays doctrine

我想在此代码的数组中得到结果:

 $person = $em->find('Person', 2);

我正在使用学说2.我希望以数组形式提供上述结果。

PHP版本5.4

3 个答案:

答案 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()];