В 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
: проверяет, что данное значение свойства является уникальным среди всех объектов одного типа (например, электронная почта регистрации уникальна для всех пользователей приложения).