试图调用名为" getQuery"的未定义方法。 class" EntidadesBundle \ Entity \ Roles"

时间:2017-10-09 21:46:15

标签: symfony doctrine-orm

我得到了这个:

public function getRolByIdAction(Request $request)
    {

        try{

            $inicio = $this->get("app.Ensession");  

            if($inicio->logeado($this) === true && $inicio->ver_rol("sistemas") && $request->getMethod() == "POST"){

                $filtro_busqueda = $request->get("filtro")["filtro"];

                $roles = $this->getDoctrine()->getRepository('EntidadesBundle:Roles')->find($filtro_busqueda);

                if($roles){

                    $response = new JsonResponse(
                        array(
                            'error' => false, 
                            'data' => ***$roles->getQuery()->getArrayResult()***
                        )
                    );

                }else{
                    new ErrorException(ErrorException::CONSULTA_SIN_RESULTADOS);
                }

            }else{
                return $inicio->logeado($this);
            }

            return $response;

        } catch (\Exception $e) {

            $response = new JsonResponse(
                array(
                    'error' => true, 
                    'mensaje' => "Error " . $e->getCode() . " -> " . $e->getMessage()
                    )
                );

            return $response;
        }
    }

问题是我不知道我要发送什么来发送我发现的 $ roles

我发了那个

POST参数 核心价值 filtro

[▼" filtro" => " 1"]

我可以从查询查询原则中返回一个json模型吗?对于symfony3,我在 Entity / roles.php中没有 @ ORM / Id

1 个答案:

答案 0 :(得分:1)

调用doctrine find方法后,不能使用getQuery()。 此方法应返回ArrayCollection。

要序列化您的角色集合,您可以使用https://github.com/schmittjoh/JMSSerializerBundle之类的包或使用本机symfony序列化程序https://symfony.com/doc/current/components/serializer.html