diff --git a/Tests/Validator/Constraints/UniqueTest.php b/Tests/Validator/Constraints/UniqueTest.php new file mode 100644 index 00000000..8931700c --- /dev/null +++ b/Tests/Validator/Constraints/UniqueTest.php @@ -0,0 +1,43 @@ += 80000) { + $loader = new AnnotationLoader(); + } else { + $loader = new AnnotationLoader(new AnnotationReader()); + } + + self::assertTrue($loader->loadClassMetadata($metadata)); + + [$constraint] = $metadata->getConstraints(); + assert($constraint instanceof Unique); + self::assertSame(['email'], $constraint->fields); + self::assertSame('doctrine_odm.mongodb.unique', $constraint->validatedBy()); + } +} + +/** @Unique(fields={"email"}) */ +#[Unique(['email'])] +class UniqueDocumentDummyOne +{ + private string $email; +} diff --git a/Validator/Constraints/Unique.php b/Validator/Constraints/Unique.php index 5b5b6a92..81fa0ad6 100644 --- a/Validator/Constraints/Unique.php +++ b/Validator/Constraints/Unique.php @@ -16,6 +16,36 @@ #[Attribute(Attribute::TARGET_CLASS | Attribute::IS_REPEATABLE)] class Unique extends UniqueEntity { - /** @var string */ - public $service = 'doctrine_odm.mongodb.unique'; + /** + * @param string[]|string $fields The combination of fields that must contain unique values or a set of options + * @param bool|string[]|string $ignoreNull The combination of fields that ignore null values + * @param mixed $payload + */ + public function __construct( + $fields, + ?string $message = null, + string $service = 'doctrine_odm.mongodb.unique', + ?string $em = null, + ?string $entityClass = null, + ?string $repositoryMethod = null, + ?string $errorPath = null, + $ignoreNull = null, + ?array $groups = null, + $payload = null, + array $options = [] + ) { + parent::__construct( + $fields, + $message, + $service, + $em, + $entityClass, + $repositoryMethod, + $errorPath, + $ignoreNull, + $groups, + $payload, + $options, + ); + } }