2011-05-14 2 views
5
$posts = $em->find('Application\BlogBundle\Entity\Post',1); 
print_r ($posts); 

Почему я получил его?Symfony2, Doctrine 2: getResult Объект

Barii\BlogBundle\Entity\Post Object ([id:Barii\BlogBundle\Entity\Post:private] => 1 [title:Application\BlogBundle\Entity\Post:private] => something [body:Application\BlogBundle\Entity\Post:private] => content ) 

вместо простого массива, как это:

array ([id] => 1, 
     [title] => "something",    
     [body] => "content" ) 

Я использую его с Symfony 2.

ответ

9

У вас есть несколько вариантов здесь. Насколько мне известно, вы не можете найти результаты как массивы из репозиториев объектов по умолчанию. Вместо этого вы можете сделать одну из двух вещей:

Во-первых, вы можете реализовать метод toArray() объекта-объекта (возможно, через mapped superclass), который просто возвращает массив свойств.

Во-вторых, вы можете использовать Doctrine Query Language, чтобы вытащить информацию, что вам нужно, используя метод getArrayResult(), возможно, что-то вроде этого:

$query = $em->createQuery('SELECT p FROM Application\BlogBundle\Entity\Post p WHERE p.id=:pid'); 
$query->setParameter('tid', $postId); 
$result = $query->getArrayResult(); // shortcut for $query->getResult(Query::HYDRATE_ARRAY); 

Более углубленные документация по DQL можно найти here.

+10

Неутешительно, что Sf2/Doctrine не ожидает этого чрезвычайно распространенного случая использования. – Acyra

Смежные вопросы