Intereting Posts
phpmailer ERROR: не удалось создать почтовую функцию Что такое статья «Оливер », описывающая алгоритм PHP для вычисления сходства текста? Матрица поиска для всех прямоугольников заданных размеров (выберите блоки сидений) PHP Codeigniter показывает кеш, когда я нажимаю кнопку «Назад» после выхода из системы PDO :: PARAM для дат? Аутентификация Nginx с помощью модуля auth_request Ошибки внутри выходного буфера Symfony – Использование внешних соединений с доктриной ORM Как добавить непокрытые файлы в отчет по охвату кода PHPUnit приложения Yii Скорость доступа к файлам и скорость доступа к базе данных PHP-запрос MySQL с данными из CSV медленная производительность командной строки php – это нормально или у меня есть проблема с установкой? Выберите произвольный файл, используя OPENDIR () Переменная как имя строки в TWIG: Symfony 2 zend form для multicheckbox удалять входные данные из меток

Проверка уникальной уникальности для односторонних, однонаправленных с помощью таблицы соединений

У меня есть 2 сопоставленных объекта ,

коробка

class Box{ //[...] /** * @ORM\ManyToMany(targetEntity="Candy", cascade={"remove"}) * @ORM\OrderBy({"power" = "DESC"}) * @ORM\JoinTable(name="box_candies", * joinColumns={@ORM\JoinColumn(name="box_id", referencedColumnName="id")}, * inverseJoinColumns={@ORM\JoinColumn(name="candy_id", referencedColumnName="id", unique=true)} * ) */ private $candies; } 

И конфеты

 class Candy { /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * * @ORM\Column(name="name", type="string", length=255) */ private $name; //[...] } 

Как вы можете видеть, это односторонняя, однонаправленная с ассоциацией Join Table . Box может «хранить» конфеты, но Candy ничего не знает о Box (где есть).

Теперь у меня есть страница, где я могу сделать конфету, и есть форма и стандарт isValid() и после этого:

 $box->addCandy($candy); $entity_manager->persist($candy); $entity_manager->persist($box); $entity_manager->flush(); 

Теперь, где моя проблема?

Я бы хотел, чтобы Box мог хранить только уникальные конфеты (по имени ), это означает, что Box может хранить объекты Candy с именами «Choco» и «Orange», но не может «Майонез» и «Майонез»,

Когда вы делаете конфеты, я не могу проверить с UniqueEntity ограничения UniqueEntity потому что конфеты не знают о коробке. Я подумал о валидаторе Callback для Box или создать собственное ограничение, но я думаю, что лучше спросить:

Как я должен это делать?