使用带有自定义查询的实体类型构建表单项时,我遇到了错误。没有自定义查询它工作得很好......所以我认为问题出在查询的某个地方。
这是来自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行
感谢您的帮助
答案 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')