2014-01-03 3 views
1

Перед созданием элемента формы с использованием типа объекта с пользовательским запросом возникает ошибка. Без пользовательского запроса он работал нормально ... поэтому я полагаю, что проблема лежит где-то в запросе.Ожидаемый аргумент типа «объект или массив», «целое число» задано

Вот отрывок из type.php

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('Event', 'entity', array(
       'class' => 'EventBundle:Event', 
       'query_builder' => function(EntityRepository $er){ 
        return $er->createQueryBuilder('e') 
         ->select('e.id, g.title') 
         ->leftJoin('e.Group g') 
         ->orderBy('e.start', 'DESC'); 
       }, 
       'property' => 'title', 
       'empty_value' => 'Please choose an event...' 
      )) 

Я могу видеть, что запрос работает отлично ... это те ценности, которые создают исключение.

PropertyAccessor -> readPropertiesUntil ('77', объект (PropertyPath), '1') в /vendor/symfony/symfony/src/Symfony/Component/PropertyAccess/PropertyAccessor.php по линии 49

Спасибо за любую помощь

+0

Чуть больше контекста здесь помог бы, я полагаю, вы создаете форму для лица, имеющим отношение события? Если нет, вы можете попробовать «отобразить» => false', тогда он не будет пытаться сопоставить это значение с объектом, это будет то, что пытается реализовать PropertyAccessor. Если вам это нужно, тогда я думаю, что есть что-то вне этого кода, возможно, отношение не установлено совершенно правильно. NB: Первым параметром является имя поля, а не имя объекта (хотя оно выведет свойство, которое вы отображаете из него, вы обычно помещаете его в нижний случай змеи, ''event''. – Steve

ответ

2

Опция "query_builder" закрытие ожидает объект или массив в качестве возврата. QueryBuilder выбирает идентификатор события и название группы, которые не являются объектами. Попробуйте это:

$builder 
     ->add('Event', 'entity', array(
      'class' => 'EventBundle:Event', 
      'query_builder' => function(EntityRepository $er){ 
       return $er->createQueryBuilder('e') 
        ->select('e') 
        ->leftJoin('e.Group', 'g') 
        ->orderBy('e.start', 'DESC'); 
      }, 
      'property' => 'title', 
      'empty_value' => 'Please choose an event...' 
     )) 
+0

Это было ... используя -> select ('e, g') и установив свойство в 'Group.title', это сработало. Большое спасибо :-) – Michi

0

у вас есть ошибка в вашем Qb Заявление

определение LeftJoin делается таким образом:

// Example - $qb->leftJoin('u.Phonenumbers', 'p', 'WITH', 'p.area_code = 55') 
public function leftJoin($join, $alias = null, $conditionType = null, $condition = null); 

в вашем случае вам нужно изменить:

->leftJoin('e.Group g') 

в

->leftJoin('e.Group', 'g') 
+0

Вы, re right ... Я изменил его, но ошибка все тот же :-( – Michi

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