2012-12-28 88 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。{} –