我正试图使用Doctrine2 QueryBuilder构建一个查询,但我得到的是:
[语法错误]第0行,第198列:错误:应为字符串结尾,得到';lo';(500内部服务器错误)
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 != '') {
其次,如果函数参数为空/null,从而导致SQL错误,则总是添加不带以下表达式的WHERE
。接下来的几行也没有意义:
if ($bool)
$dql.=' AND';
$bool
将始终为false,因此不需要AND
。
也许是由于尝试和错误导致了一些混乱的代码。