Doctrine2 中的查询错误

Error with a query in Doctrine2

我正在尝试使用 Doctrine2 QueryBuilder 构建查询,但这是我得到的:

[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();

}

您的 SQL 中存在一些问题。

首先:函数参数$id_localidad不同于这一行:

if ($localidad_id != '') {

其次,如果函数参数是 empty/null,您总是添加一个 WHERE 而没有后面的表达式,这会导致 SQL 错误。下一行也没有意义:

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

$bool 将始终为 false,因此不需要 AND

可能是一些乱码因为试错。