2016-07-06 7 views
1

Я использую Symfony с Twig. В Twig у меня есть доступ к переменной app.user. Эта переменная возвращает пользовательский объект пользователя вошедшего в систему пользователя.Верните DTO вместо объекта пользователя

Хотя это здорово, я хотел бы вернуть проанализированный DTO пользовательской сущности. Это связано с количеством отношений, которые пользовательский объект имеет с другими объектами. Правда, мне нужны эти данные на каждой странице зарегистрированного пользователя, но он также превращает объект пользователя в большой объект.

Есть ли способ вернуть проанализированный DTO при вызове app.user в Twig?

ответ

0

В принципе, отношения Доктрины должны быть ленивы загружены (= только загружаются, если вы используете эти свойства).

Смотрите здесь: http://doctrine-orm.readthedocs.io/projects/doctrine-orm/en/latest/reference/working-with-objects.html#entity-object-graph-traversal

Таким образом, вы не можете оптимизировать это с избегая отношений быть увлажненной, так как он уже по умолчанию.

увлажнять отношения вы можете настроить их выборки = «EAGER»

+0

Я знаю, что если вы не используете эти свойства на каждой странице, они должны быть ленивыми загружены. Однако в этом проекте эти свойства всегда должны быть загружены, потому что они всегда используются. Мой вопрос состоял в том, чтобы я мог заставить 'app.user' возвращать DTO вместо сущности. – user3360311

+1

ОК, нет, вы не можете, но вы можете написать собственное расширение Twig, чтобы распространять свой DTO и крепить его самостоятельно. – Alsatian

+0

Я не думал об этом, спасибо за предложение. – user3360311

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