0

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

オブジェクトの代わりに配列を取得しようとすると、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>');
4

1 に答える 1

0

1 つを使用する必要があります:メソッド getId() がコントローラーで定義されていないというエラーを // 与える$event->getId() 代わりに$event.getId(): 未定義関数 MeetingBundle\Controller\getId() への呼び出し

しかし、Doctrine 2 のベスト プラクティスでは、実際には、 を使用して->getResult(\Doctrine\ORM\AbstractQuery::HYDRATE_ARRAY);オブジェクトを取得する代わりに、 : を使用することが提案されています->getResult();http://www.uvd.co.uk/blog/some-doctrine-2-best-practices/

于 2015-12-11T12:01:06.310 に答える