2012-12-28 53 views
0

我正在使用Symfony2以及doctrine2。Doctrine2 FindOneBy函数返回空数组

我需要知道,如果在表中存在一个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; 
} 

的方法将按预期返回true,如果在数据库中存在的username或如果不是,则为false但是,当从现有用户($usuario)返回用户数据时,它始终返回一个空的JSON数组({}),而不是期望的对象。有任何想法吗?

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

回答

0

的确,用户的所有属性都是私有的。然而,json_encode仅对公共对象属性进行编码。

你可以如此实现JsonSerializable。查看更多详情here或将这些属性设置为公共(更糟糕的解决方案)

希望这会有所帮助。

+0

如果我尝试访问返回的对象的属性(即:后续代码var_dump($ usuario->用户名)),它显示了一个错误,说我不能访问对象的私有财产。也许那么,这就是为什么它发送一个空数组。 我使用console.dir从AJAX调用中返回的JSON,它总是打印{}给$ usuario。{} –