Как получить доступ к значениям объектов результата Symfony2 doctrine createQuery? Вызов неопределенной функции MeetingBundle\Controller\getId()

Как получить доступ к значениям объектов результата Symfony2 doctrine createQuery? Я хотел бы получить массив объектов объектов, а затем getId каждого объекта.

use MeetingBundle\Entity\Event;
class EventController extends Controller{
..
public function searchAction(Request $request){
...
 $em = $this->getDoctrine()->getManager();
 $searchArr= ['key1', 'key2'];
foreach ($searchArr as $val) { 
  $events = $em->createQuery( 'SELECT e FROM MeetingBundle:Event e
                   WHERE e.keywords LIKE  :keyw' )->setParameter('keyw', '%'.$val.'%')->getResult();

  foreach ($events as $event){
  print_r('<br>result <pre>'); print_r($event.getId()); print_r('</pre>');
//i am getting error, that i am calling undefined method getId()
  }
}

Если я пытаюсь получить массив вместо объекта, то я могу получить доступ к идентификатору:

    $events = $em->createQuery( 'SELECT e FROM MeetingBundle:Event e 
WHERE e.keywords LIKE  :keyw' )->setParameter('keyw', '%'.$val.'%')
->getResult(\Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY);
     foreach ($events as $event){
 print_r('<br>*id= <pre>'); print_r($event['id']); print_r('</pre>');

1 ответ

Нужно использовать: $event->getId()вместо $event.getId() // выдает ошибку, что метод getId() не определен в контроллере: вызов неопределенной функции MeetingBundle\Controller\getId()

Но в лучших практиках Doctrine 2 на самом деле предлагается использовать: ->getResult(\Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY);вместо получения объектов с ->getResult();, http://www.uvd.co.uk/blog/some-doctrine-2-best-practices/

Другие вопросы по тегам