Php Symfony-FOSUserBundle大对象

Php Symfony-FOSUserBundle大对象,php,doctrine-orm,symfony,Php,Doctrine Orm,Symfony,当我尝试使用: $user = $userRepo->find($id) 使用FOSUserBundle,我接收到一个大对象。当然,我可以使用我自己的回购查询来查找它并作为数组返回,但我想通过以下方式更新此用户: $user->setName('asd'); 如果有其他方法通过find函数获得更小的对象?任何水合物或任何东西。在我的情况下,引用不是一个解决方案。我相信您可以使用来实现这一点: $userId = ...; // you user id $user = $em

当我尝试使用:

$user = $userRepo->find($id)
使用FOSUserBundle,我接收到一个大对象。当然,我可以使用我自己的回购查询来查找它并作为数组返回,但我想通过以下方式更新此用户:

$user->setName('asd');

如果有其他方法通过find函数获得更小的对象?任何水合物或任何东西。在我的情况下,引用不是一个解决方案。

我相信您可以使用来实现这一点:

$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();

我还没有试过运行它,但听起来它可以工作…

是的,这可以工作,尽管文档中说我会非常小心地使用它。例如,如果要更改检索到的部分对象上的任何其他字段,则不会在刷新时更新该字段。所以如果你做了
$user->setSomethingElse(“废话”)它不会在数据库中更新。返回整个对象有什么问题?它有多大?