В Symfony 4.3 в компонент Validator добавили новое ограничение с именем Unique, чтобы проверить уникальность элементов коллекции (ни один из них не присутствует более одного раза):
// src/Entity/Person.php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Person
{
/**
* @Assert\Unique(message="The {{ value }} email is repeated.")
*/
protected $contactEmails;
}
Новое ограничение может быть применено к любому свойству типа array или \Traversable, и сравнивается строго, поэтому разные типы считаются разными элементами (например, «7» (строка) отличается от 7 (целое число)).
Symfony уже предоставляет некоторые валидаторы, связанные с коллекциями и уникальностью, поэтому имейте в виду, что:
Collection: применяет различные ограничения проверки для каждого элемента коллекции.Unique: подтверждает, что все элементы коллекции являются уникальными.UniqueEntity: проверяет, что данное значение свойства является уникальным среди всех объектов одного типа (например, электронная почта регистрации уникальна для всех пользователей приложения).