Как получить доступ к значениям объектов результата 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/