Вурдалак
Продвинутый новичок
Ну, как обычно. Вся логика вертится вокруг операций типа «сменить имя», а конечная цель — показать полученную иерархию. :/Конечная роль - организация схемы соединения устройств по различным шинам (Ethernet, USB, COM и т.д., необязательно компьютерным).
Во-первых, port не особо походит на сущность.Например, сделать $port->changeName(); $port_repo->flush(); изменения ушли в БД уже не получится, валидатор будет ругаться.
Во-вторых, даже если это и сущность, то судя по описанию, она должна быть дочерней сущностью aggregate'а «устройства», а значит у неё не должно быть собственного репозитория.
В-третьих, тут смешивается терминология Doctrine и DDD: «репозитории» Doctrine — это другие репозитории, они более низкоуровневые, лежащие в отдельной папочке «Инфраструктура». Там действительно у Port может быть свой Doctrine repository, но использовать его напрямую — это всё равно что напрямую запросы в базу фигачить.
Что за ссылки? Почему «другим частям системы» недостаточно port id или device id + port name в качестве идентификатора?Устройство не м.б. агрегатом, т.к. ссылки в других частях системы идут на сам порт.
Последнее редактирование: