Вопросов много... Прочитал много тем на этом форуме(не все к сожалению понятно) и все равно не покидает мысль что в голове компот...
Есть желание отойти от использования AR в проекте, так как проект создается не по ТЗ и будет дополняться функционалом, поэтому хочется оптимально разделить все слои. Сразу оговариваюсь - использование объектов представления (ActiveForm, виджетов и прочих перелестей из коробки) По сути от YII остануться контроллеры, роутинг, RBAC....
Хочется пройти путь - от Данных запроса - до ответа
Если можно вопросы буду задавать последовательно в одной теме.
1. возьмем любой запрос - он обладает данными. В самом простом случае (CRUD) приходят данные в обычных строковых типах - мы их сохраняем в базу. НО допустим у нас есть объект - Заказ- у него полюбому должен быть атрибут контрагент - что тоже является Объектом.Так вот что должно приходить в запросе - ссылка на Контрагента или уже объект Контрагент?
Если приходит ссылка на объект контрагента - то при создании Сущности Заказ нам нужно передать не ссылку на контрагента а сам объект - как это реализовывать? через что? Почитав форум есть мысль -
данные запроса (по сути массив)->Преобразуем в DTO ->Создаем Сущность на основе DTO.----ТУТ ПОКА СТОП!!
Мне неясно следующее - где мы преобразовываем ссылки на объекты в сами объекты?
И глобально для понимания - DTO может в себе содержать объекты или только ссылки (uuid или id)?
Вопросы, вопросы и еще раз вопросы...
Re: Вопросы, вопросы и еще раз вопросы...
Если контрагенты хранятся отдельно, то достаточно ContragentId.
Код: Выделить всё
$contragent = $this->contragentRepository->get($command->contragentId);
$order = new Order(
$this->orderRepository->nextId(),
$contragent->getId(),
new Address(
$command->country,
$command->city,
),
$command->comment;
);
$this->orderRepository->add($order);
Re: Вопросы, вопросы и еще раз вопросы...
Dto должен состоять из простых типов и/или других dro.