#laravel #eloquent
Вопрос:
У меня есть Ticket
модель, которая имеет полиморфную связь со своими подтипами, EquipmentTicket
и OfficeSuppliesTicket
.
После того, как служба поддержки получит билет, им необходимо отправить заявку на PurchaseOrder
основе этого билета в отдел кадров. PurchaseOrder
ведет себя как билет и имеет аналогичный API, но, учитывая бизнес-логику, для меня имеет смысл, что эти два термина разные.
Я чувствую, что при рассмотрении как отдельной сущности возникает некоторое дублирование PurchaseOrder
, но имеет ли смысл другой выбор?
Комментарии:
1. Когда вы говорите «бизнес-логика», разве это не то, с чем должен работать контроллер?
2. Будет ли инъекция зависимостей для вас вариантом?
3. Я ссылаюсь на бизнес-логику как на то, что имеет больше смысла для бизнеса. Таким образом, не имеет смысла
PurchaseOrder
быть подтипом, когда вы не так об этом говорите. Так что это похоже на билет, но не совсем билет. Как может помочь инъекция зависимостей?4. Бизнес-логика @shaedrich относится к модели, а не к контроллеру. @Ogatron3000 Доменный дизайн имеет концепцию, называемую
Bounded Context
«где один и тот же объект может иметь разное значение и тонкие различия в функциональности в зависимости от того, где он используется». В этом сценарии допускается дублирование, поскольку имеет смысл не пропускать логику между контекстами.5. @Ogatron3000 Правильно. Даже если два объекта имеют одну и ту же структуру/функциональность, если у них есть тонкие различия и имеет смысл рассматривать их как независимые объекты, не бойтесь относиться к ним как к таковым.