«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2021/12/23 16:55:21  №2246275 1
Помогите разобраться с валидатором симфы. Есть констрейнт UniqueEntity, но проблема в том, что мне нужно применять его не к сущности, а к DTO. Пробовал указывать нужную сущность в опции entityClass и поле для валидации в опции field, но не прокатило. Пока решил проблему созданием кастомного констрейнта, но что-то мне кажется, что я навелосипедил без необходимости.
Ответы: >>2246283 >>2246476
Аноним 2021/12/23 21:29:29  №2246476 2
>>2246275

> Есть констрейнт UniqueEntity, но проблема в том, что мне нужно применять его не к сущности, а к DTO.

Если поискать валидатор этого констрейнта: https://github.com/symfony/doctrine-bridge/blob/876bef571479727119e03ff82752a8ba56dc5c91/Validator/Constraints/UniqueEntityValidator.php#L85

То мы увидим там:

> $class = $em->getClassMetadata(\get_class($entity));

То есть проверять им можно только сущность Доктрины иначе метаданные в этой строчке не найдутся.

Так что похоже надо делать свой валидатор.

Это недостаток DTO. Когда у тебя в коде есть два разных объекта, представляющих одно и то же, приходится делать по две функции для работы с ними (иногда тут могут помочь интерфейсы, но не в этом случае).