2016-02-12 62 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

是的,这很好! :) –