2016-05-09 33 views
0

我试图建立使用Doctrine2的QueryBuilder查询,但是这是我得到的查询:错误与Doctrine2

[Syntax Error] line 0, col 198: Error: Expected end of string, got 'lo' (500 Internal Server Error)

public function FiltrarDatos($localidad_id){ 
    $em = $this->getEntityManager(); 
    $dql = 'SELECT l FROM TarifaBundle:Llamada l'; 
    if ($localidad_id != "") { 
     $dql.=' INNER JOIN l.localidad lo'; 
    } 
    $dql.= ' WHERE'; 
    $bool = false; 
    if ($localidad_id != '') { 
     if ($bool) 
      $dql.=' AND'; 
     $dql.=' lo.id=:localidad_id'; 
     $bool = true; 
     $parameters['localidad_id'] = $localidad_id; 
    } 
    $query = $em->createQuery($dql); 
    $query->setParameters($parameters); 

    return $query->getResult(); 

} 

回答

0

有你的SQL一些问题。

第一:函数参数$id_localidad是这条线不同:

if ($localidad_id != '') { 

其次,你总是添加WHERE没有下面的表达式,如果函数参数为空/空这导致SQL错误。另外,下一行是没有意义的:

if ($bool) 
    $dql.=' AND'; 

$bool将永远是假的所以不需要AND

由于尝试和错误,可能会出现一些乱码。