接线员"不喜欢"不正常

时间:2017-05-22 10:37:13

标签: symfony doctrine dql

我在我的应用中创建了一个新查询。 我使用过滤器,具有不同的选项(包含,相同或不同)。 如果我使用operator"不同的",我的查询生成如下:

SELECT p FROM ProductosBundle:Producto p 
LEFT JOIN p.tipo t 
LEFT JOIN p.departamento d 
WHERE 1=1 AND t.nombre NOT LIKE '%articulo%'

我的产品与" articulo"不同,但返回0结果......

我尝试使用NOT LIKE!=<>,但没有返回结果。

我的情况有什么不对吗?我没有看到问题,包含并且相同它有效。

有什么想法吗?感谢

编辑1:

这是我的控制者:

...
    $em = $this->get('doctrine.orm.entity_manager');
            $dql = "SELECT p FROM ProductosBundle:Producto p LEFT JOIN p.tipo t LEFT JOIN p.departamento d";
            if (isset($_GET['filterField']) && isset($_GET['filterValue'])){
                $valores = explode(",",$_GET['filterValue']);
                $filas = explode(",",$_GET['filterField']);
                $operadores = explode(",",$_GET['filterOperator']);
                $dql .= " WHERE 1=1";
                for($i = 0; $i < count($valores); $i++){
                    $dql.= " AND ". $filas[$i]. " " . $operadores[$i] ;
                    if($operadores[$i] == "LIKE" OR $operadores[$i] == "NOT LIKE"){
                        $dql .= " '%".$valores[$i]."%'";
                    }else{
                        $dql .= " '".$valores[$i]."'";
                    }
                }
            }

        $query = $em->createQuery($dql);

        $paginator = $this->get('knp_paginator');
        $productos = $paginator->paginate(
            $query,
            $request->query->get('page', 1),
            25
        );

EDIT2:

我的探查器正在执行此操作:

SELECT DISTINCT p0_.id AS id_0 
FROM producto p0_ 
LEFT JOIN tipo t1_ ON p0_.tipo = t1_.id 
LEFT JOIN departamento d2_ ON p0_.departamento = d2_.id 
WHERE t1_.nombre LIKE 'articulo' 
AND 1 = 1 
AND t1_.nombre NOT LIKE '%articulo%' 
LIMIT 25 OFFSET 0

它是一个像'Articulo&#39; ...为什么??? !!!

1 个答案:

答案 0 :(得分:0)

据推测,您的UI逻辑/设置查询参数的代码存在错误。这样:

   $valores = explode(",",$_GET['filterValue']);
   $filas = explode(",",$_GET['filterField']);
   $operadores = explode(",",$_GET['filterOperator']);

生成两者

t1_.nombre LIKE 'articulo'

t1_.nombre NOT LIKE '%articulo%' 

所以你应该看一下填充filterValue,filterField和filterOperator的代码。