我的存储库中有一个查询,这是我的功能:
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
问题在哪里?
答案 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;
}