vendor/shopware/core/Framework/DataAbstractionLayer/Validation/EntityExistsValidator.php line 44
<?php declare(strict_types=1);namespace Shopware\Core\Framework\DataAbstractionLayer\Validation;use Shopware\Core\Framework\DataAbstractionLayer\DefinitionInstanceRegistry;use Shopware\Core\Framework\DataAbstractionLayer\Search\EntitySearcherInterface;use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;use Shopware\Core\Framework\Log\Package;use Symfony\Component\Validator\Constraint;use Symfony\Component\Validator\ConstraintValidator;use Symfony\Component\Validator\Exception\UnexpectedTypeException;#[Package('core')]class EntityExistsValidator extends ConstraintValidator{/*** @internal*/public function __construct(private readonly DefinitionInstanceRegistry $definitionRegistry,private readonly EntitySearcherInterface $entitySearcher) {}public function validate(mixed $value, Constraint $constraint): void{if (!$constraint instanceof EntityExists) {throw new UnexpectedTypeException($constraint, EntityExists::class);}if ($value === null || $value === '') {return;}$definition = $this->definitionRegistry->getByEntityName($constraint->getEntity());$criteria = clone $constraint->getCriteria();$criteria->addFilter(new EqualsFilter($constraint->getPrimaryProperty(), $value));// Only one entity is enough to determine existence.// As the property can be set in the constraint, the search above does not necessarily return just one entity.$criteria->setLimit(1);$result = $this->entitySearcher->search($definition, $criteria, $constraint->getContext());if ($result->getTotal() > 0) {return;}$this->context->buildViolation($constraint->message)->setParameter('{{ primaryProperty }}', $constraint->getPrimaryProperty())->setParameter('{{ id }}', $this->formatValue($value))->setParameter('{{ entity }}', $this->formatValue($constraint->getEntity()))->setCode(EntityExists::ENTITY_DOES_NOT_EXISTS)->addViolation();}}