2016-02-12 45 views
2

當我嘗試使用:Symfony的 - FOSUserBundle大對象

$user = $userRepo->find($id) 

與FOSUserBundle然後我收到一個大對象。當然,我可以用我自己的回購查詢發現它並返回作爲數組,但我想更新該用戶通過:

$user->setName('asd'); 

如果有任何其他的方式獲得通過查找功能更小的對象?任何水合物或其他。這個參考對我來說不是一個解決方案。

+0

什麼是問題返回整個對象?它有多'大'? –

回答

2

我相信你可以使用Partial Objects實現這一點:

$userId = ...; // you user id 
$user = $em 
    ->createQuery("SELECT PARTIAL u.{id,name} from AppBundle:User u WHERE u.id = :id") 
    ->setParameter('id', $userId) 
    ->getSingleResult(); 

$user->setName("some new name"); 
$em->flush(); 

我還沒有試過運行此,但它聽起來像它可以工作...

+1

是的,這將工作,雖然就像文檔說,我會非常小心使用它。例如,如果您想更改檢索到的部分對象上的任何其他字段,則它不會在刷新時更新。所以如果你做了'$ user-> setSomethingElse(「blah」);'它不會在數據庫中得到更新。 –

+0

是的,這很好! :) –