给出了“对象或数组”类型的预期参数,“整数”

时间:2014-01-03 18:14:44

标签: symfony symfony-forms

使用带有自定义查询的实体类型构建表单项时,我遇到了错误。没有自定义查询它工作得很好......所以我认为问题出在查询的某个地方。

这是来自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',object(PropertyPath),   '1')in   /vendor/symfony/symfony/src/Symfony/Component/PropertyAccess/PropertyAccessor.php   在第49行

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

“query_builder”闭包选项需要一个对象或一个数组作为返回。您的QueryBuilder选择事件的Id和组的标题,它们不是对象。 试试这个:

$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...'
        ))

答案 1 :(得分: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')