2016-12-28 2 views
1

У меня есть таблица с именем «Изображения», которая содержит список логотипов. Я хотел бы получить только логотипы авиакомпаний.коллекция фильтров в form builder [symfony2]

У меня есть эта ошибка:

An exception has been thrown during the rendering of a template ("Invalid parameter number: number of bound variables does not match number of tokens")

->add('logo', 'genemu_jqueryselect2_entity', array(
    'class' => 'FLYBookingsBundle:Images', 
    'property' => 'alt', 
    'placeholder' => 'Choose your company', 
    'query_builder' => function(EntityRepository $er) { 
     return $er->createQueryBuilder('u') 
      ->where('u.transport_mode = :AIRPLANE') 
      ->groupBy('u.id') 
      ->orderBy('u.alt', 'ASC'); 
    },)) 

+---+----------------------------+-------------+-----------------+ 
|id |  path     |  alt |tranport_mode | 
+---+----------------------------+-------------+-----------------+ 
| 1 | /symfony/web/etihad.jpg | etihad  |AIRPLANE   | 
| 2 | /symfony/web/singapore.jpg | singapore |AIRPLANE   | 
| 3 | /symfony/web/InterCape.jpg | InterCape |BUS    | 
+---+----------------------------+-------------+-----------------+ 

ответ

3

Вам нужно связать параметр с помощью функции setParameter()

setParameter("mode", "AIRPLANE") 

Код

->add('logo', 'genemu_jqueryselect2_entity', array(
    'class' => 'FLYBookingsBundle:Images', 
    'property' => 'alt', 
    'placeholder' => 'Choose your company', 
    'query_builder' => function(EntityRepository $er) { 
     return $er->createQueryBuilder('u') 
      ->where('u.transport_mode = :mode') 
      ->setParameter("mode", "AIRPLANE") 
      ->groupBy('u.id') 
      ->orderBy('u.alt', 'ASC'); 
    },)) 

Вы объявили привязка называется :mode, но вы никогда не связать что-нибудь к нему.

Read more about binding parameters in doctrine

+0

ОК, я понимаю. Спасибо за помощь :) – Sirius

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