我正在使用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
的所有正确字段和值。
答案 0 :(得分:0)
确实,您的用户的所有属性都是私有的。然而,json_encode只编码公共对象属性。
您可以这样实现JsonSerializable。查看更多详细信息here或将这些属性设置为公开(更糟糕的解决方案)
希望这有帮助。