Size: a a a

2021 June 11

D

Dmitry in symfony
при попытке сделать
$entity->updatePrice($amount, $currency){$this->prices[$currency] = new Price(...)} доктрина делает инсерт
и падает, ибо как в базе уникальность на поля
источник

VM

Volodymyr Melko in symfony
так а зачем ты делаешь new?
источник

VM

Volodymyr Melko in symfony
if ($this->prices->containsKey($currency)) {
   $this->prices[$currency]->setAmount($amount);
} else {
  $this->prices[$currency] = new Price($currency, $amount);
}
источник

D

Dmitry in symfony
действительно
источник

D

Dmitry in symfony
нахер все, пойду за кофе
источник

D

Dmitry in symfony
благодарствую премного
источник

VM

Volodymyr Melko in symfony
можно и через нью, но тогда надо мерджить объекты, такое себе
источник

WD

Web Dev in symfony
А подскажите пожалуйста по логике ддд, может ли в слое приложения быть валидация от симфони в виде анотаций? Хочу к своим командам добавить анотации валидации от симфони
источник

VM

Volodymyr Melko in symfony
при чем тут ддд ? =)
источник

睫膏

睫毛 膏蛇 in symfony
Разделение domain
источник

VM

Volodymyr Melko in symfony
Начнем с того, что картинка в твоём посте к ддд никак не относится...
Ещё в ддд нет никакого аппликецшен слоя
источник

睫膏

睫毛 膏蛇 in symfony
Пост не мой, обсуждение можно закрывать
источник

АЕ

Александр Ерин... in symfony
DDD - и есть application слой😁
источник

АЕ

Александр Ерин... in symfony
Прикрути валидацию к входящим dto, а команды сделай отдельной dto, раздели UI и DomainService
источник

WD

Web Dev in symfony
У меня так и есть что имеются реквест объекты на которых лежит валидация, и потом передаёт эти данные в Команды. Но тогда команда не провалидирована и в принципе можно кинуть туда что угодно
источник

АЕ

Александр Ерин... in symfony
Валидировать нужно только входящие данные извне, они считаются сомнительными по умолчанию, если ты добиваешь команду какими-то данными изнутри системы, то значит эти данные валидны, так как они уже содержатся у тебя в системе, и перед тем как туда попасть уже когда-то были провалидированы
источник

A

Anthony in symfony
+
источник

A

Anthony in symfony
Но это только если твоя модель действительно следит за своей валидностью.
А то ж бывает, забывают )
источник

Б

Борис Зырянов... in symfony
Это в большей степени вопрос реализации, т.е. того как ты будешь реализовать валидацию в принципе. И DDD здесь постольку поскольку.
В application layer может быть валидация, но только на соответствия бизнесовыми правилам. Например, перед помещением в контроллер DTO, прошла валидацию, т.к. действительна валидна с точки зрения типов данных — нужные поля заполнены и т.п. А уже конкретный use case, или команда, или чего там у тебя будет придумано, в общем что-то, что запускает Domain Logic смотрит на соответствие данных бизнес задаче. Типа, не может быть транзакции на сумму меньше 500 тугриков, поэтому вот тебе бизнес эксепшен.
Кто-то все валидации (и бизнесовые и валидацию типов) пихаряет в район контроллера, кто-то переносит бизнесовую валидацию в красный кружочек Domain Logic (и гвоздями забивает if ($sum < 500) {...}). А кто-то умный, прям как я, и понимает, что это две разные задачи, которые нужно решать в местах до запуска какой-то логики соответствующего слоя.
источник

WD

Web Dev in symfony
спасибо за ответы, вроде понял)
источник