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

Да, это хороший момент! :) –

Смежные вопросы