Здравствуйте. Задался вопросом как правильно с точки зрения доступных инструментов, кода и архитектуры оптимально преобразовать Request через DTO в сущность.
Допустим есть запрос с параметрами:
{
"name": "Vasya",
"age": 18,
"town": 1
}
DTO cо свойствами:
string $name;
int $age;
App\Entity\Town $town;
и сущность User с некоторыми свойствами, включая те, что есть в DTO.
Хотелось бы узнать ваше мнение как лучше:
1. Из объекта Request параметры запроса на DTO. Если с простыми типами данных все понятно (десериализовать запрос), то как быть с объектами в свойствах (они же отношения в сущностях) где town 1 надо преобразовать $townRepository->find(1)?
2. Как после выполнения п.1, имея заполненный DTO данными запроса, смаппить эти данные на сущность. Писать самому маппер или просто в котнроллере делать типа $user-setAge($DTO->getAge());
Интересует ответ на вопрос с точки зрения лучших практик.
Видел реализации на базе кастомного ParamConvertera. Думаю, также, что можно повесить обработчик события на запрос и там как-то обрабатывать Request, но не уверен, что это правильно. Хотелось сократить время на набивании ошибок и сразу пойти по правильному поту) Понимаю, что есть библиотеки, но помимо советов их хотелось бы узнать и подноготную этого процесса на пальцах. В общем буду рад любым рекомендациям и советам. )