скажите, на сколько будет допустимо, если я в этом DTO классе при добавлении каких-то данных(например массив айдишников) в setter методе буду делать запросы в БД и возвращать коллекцию?
ни на сколько dto не должно иметь поведения, а тем более в базу ходить
а нормально ли будет в методе getDto() в form request делать зарос в бд и закидывать в DTO уже коллекцию?
не очень нормально, код который запрос в базе отправляет где-то в сервисном слое должен быть
то есть, должно быть что-то типа такого? class ProductRequest { public function getDto() { $productIds = $this->input('products'); $products = $this->productService->getProductsByIds($productIds); $dto = new YourDTO(); $dto->setProducts($products); return $dto; } }
Request вообще ничего не должен знать про сервис, просто дергай $this->productService->getProductsByIds в нужном месте в контроллере или в сервисах и все
и зачем это делать в FormRequest? к тому-же в FormRequest не потянуть зависимости в классическом варианте (только через метод rules()) может это стоит сделать в отдельном классе, т.е. получить в контролере массив проверенных данных, далее передать их в сервисный класс, который и вернет нужного типа DTO
> получить в контролере массив проверенных данных, далее передать их в сервисный класс, который и вернет нужного типа DTO нужен DTO, что бы передать в класс, который вернет DTO для другого класса. так можно валидацию множить до безумства
у него нет DTO, у него есть две точки входа, получающие разные данные, но на основе этих данных должно быть сформировано DTO, которое передается в сервис расчета стоимости, я так понял
вот эти айдишники в сервис и передай и сделай выборку там
Обсуждают сегодня