Новое в Symfony 4.3: Уникальное ограничение

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