0

How to access objects values of Symfony2 doctrine createQuery result? I would like to retrieve array of entities objects, and than getId of each entity.

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()
  }
}

If i try to get array instead of object, than i can access id:

    $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>');
olga
  • 959
  • 1
  • 15
  • 42

1 Answers1

0

One must use: $event->getId() instead of $event.getId() //gives error that method getId() is not defined in controller: Call to undefined function MeetingBundle\Controller\getId()

But in Doctrine 2 best practices, actually it is suggested to use: ->getResult(\Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY);instead of retrieving objects with ->getResult();. http://www.uvd.co.uk/blog/some-doctrine-2-best-practices/

olga
  • 959
  • 1
  • 15
  • 42