Doctrine2 FindOneBy函数返回空数组

时间:2012-12-28 05:15:31

标签: symfony doctrine-orm

我正在使用Symfony2和doctrine2。

我需要知道表中是否存在username,所以我通过AJAX调用此方法...

public function existeUsername()
{
    $req = $this->getRequest();
    $user = $req->request->get('user');
    $em = $this->getDoctrine()->getEntityManager();
    $usuario = $em->getRepository('RECURSIVAUserBundle:Usuario')->findOneByUsername($user);
    if ($usuario): 
        //user found
        $response = new Response(json_encode(array('error' => true, 'usuario' => $usuario, 'user' => $user)));
        $response->headers->set('Content-Type', 'application/json');
        return $response;
    else: 
        //did not found the user
        $response = new Response(json_encode(array('error' => false, 'user' => $user)));
        $response->headers->set('Content-Type', 'application/json');
        return $response;
    endif;
}

如果数据库中存在username,则该方法按预期工作返回true,否则返回false。但是当从现有用户($usuario)返回用户数据时,它总是返回一个空的JSON数组({})而不是预期的对象。有什么想法吗?

如果我var_dump($usuario)在返回响应之前,它会打印出username的所有正确字段和值。

1 个答案:

答案 0 :(得分:0)

确实,您的用户的所有属性都是私有的。然而,json_encode只编码公共对象属性。

您可以这样实现JsonSerializable。查看更多详细信息here或将这些属性设置为公开(更糟糕的解决方案)

希望这有帮助。