我的createQueryBuilder出错

时间:2016-01-05 07:28:14

标签: symfony doctrine-orm

我的存储库中有一个查询,这是我的功能:

public function queryActivos()
    {
        $em = $this->getEntityManager();
        $query = $em->createQueryBuilder('af')
            ->where('af.activo = :activo')
            ->setParameter('activo', true);
        return $query;
    }

我从我的formType调用此函数:

->add('articulosDefectuosos','entity', array(
                'empty_value' => 'SELECCIONE ARTICULO DEFECTUOSO',
                'class'     => 'VentasAlmacenBundle:ArticuloDefectuoso',
                'multiple' => true,
                'expanded' => false,
                'query_builder' => function(EntityRepository $er){
                    return $er->queryActivos();
                },
                'attr'  =>  array(
                    'class' => "browser-default"
                )
            ))

这会在queryBuilder中出现下一个错误:

Expected IdentificationVariable | ScalarExpression | AggregateExpression | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression, got 'WHERE'
500 Internal Server Error - QueryException 

问题在哪里?

1 个答案:

答案 0 :(得分:1)

您的查询缺少要选择的数据以及从哪个实体选择数据。通常,您可以通过调用查询构建器的select()from()方法来添加这些缺失的信息。但是,由于您在存储库中创建了查询构建器,因此可以直接使用createQueryBuilder()方法adds the missing information automatically

public function queryActivos()
{
    $queryBuilder = $this->createQueryBuilder('af')
        ->where('af.activo = :activo')
        ->setParameter('activo', true);
    return $queryBuilder;
}

另见http://symfony.com/doc/current/book/doctrine.html#querying-for-objects-using-doctrine-s-query-builder