查询加入不起作用

时间:2015-11-09 10:15:29

标签: symfony doctrine-orm

我正在我的控制器中进行查询:

$aviso = $em->getRepository("FabricacionBundle:Aviso")->findBy(array("fecha" => $fecha));

        $dql   = "SELECT a FROM PedidosBundle:Articulo a WHERE a.aviso = :aviso";
        if(isset($_GET['filterField']) && isset($_GET['filterValue'])){
            $dql   = "SELECT a FROM PedidosBundle:Articulo a JOIN ProductosBundle:Producto p WHERE a.aviso = :aviso";
            $dql .= " AND " . $_GET['filterField'] . " LIKE '%" . $_GET['filterValue'] . "%'";
        }
        $query = $em->createQuery($dql)
            ->setParameter("aviso", $aviso[0]->getId());
        //dump($query);die();
        $paginator  = $this->get('knp_paginator');
        $articulos = $paginator->paginate(
            $query,
            $request->query->get('page', 1),
            25
        );

当我不使用过滤器时,这项工作,但当我使用过滤器时,我得到下一个错误:

Cannot count query which selects two FROM components, cannot make distinction 

问题出在哪里?谢谢!

1 个答案:

答案 0 :(得分:0)

你在运行什么SQL引擎?

请注意,将$ _GET变量中的任何内容直接插入到SQL查询中通常是一种非常糟糕的做法,因为这会导致SQL注入。 想象一下,有人在\'; DROP TABLE something; --发送了$_GET['filterField'] - 一切都消失了。

从我的头脑中,缺乏加入条件。