Исключение проверки Symfony2 с уникальным ограничением - PullRequest
0 голосов
/ 20 сентября 2011

У меня есть сущность "Кино", которая имеет уникальное ограничение посредством аннотации доктрины.На основе сущности фильма я автоматически создал слой CRUD.Когда я сейчас пытаюсь добавить новый фильм, я получаю следующее исключение:

Только имена полей, сопоставленные с Doctrine, могут быть проверены на уникальность.

Когда снято ограничениевсе отлично работаетУ кого-нибудь есть идея, в чем заключается проблема и как я могу ее решить?

Я предполагаю, что сущность, поскольку она новая, не синхронизирована с EntityManager и, следовательно, не может проверить ограничение.Могу ли я закрыть?

Я использую Symfony 2.0.1 с Doctrine 2.1.1, MySQL в качестве базы данных.

Спасибо,-lony

Объект "Кино":

/**
 * @ORM\Table()
 * @ORM\Entity
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="type", type="string")
 * @ORM\DiscriminatorMap({"movie" = "Movie", "series" = "Series"})
 * 
 * @DoctrineAssert\UniqueEntity("title_orginal")
 */
class Movie {

  /**
   * @var integer $id
   *
   * @ORM\Column(name="id", type="integer")
   * @ORM\Id
   * @ORM\GeneratedValue(strategy="AUTO")
   */
  private $id;

  /**
   * @var string $titleOrginal
   *
   * @ORM\Column(name="title_orginal", type="string", length=255, unique="true")
   */
  private $titleOrginal;

  ..

Ответы [ 2 ]

3 голосов
/ 26 октября 2012

Я думаю, что есть небольшая опечатка:

@DoctrineAssert\UniqueEntity(fields={"title_orginal", message="my.custom.message"})

должно быть:

@DoctrineAssert\UniqueEntity(fields={"title_orginal"}, message="my.custom.message")

и для нескольких полей

@DoctrineAssert\UniqueEntity(fields={"title_orginal", "field2"}, message="my.custom.message")
3 голосов
/ 06 октября 2011

Ваш синтаксис неправильный.Используйте это:

@DoctrineAssert\UniqueEntity(fields={"title_orginal"})

вместо

@DoctrineAssert\UniqueEntity("title_orginal")

Затем вы можете настроить сообщение о нарушении следующим образом:

@DoctrineAssert\UniqueEntity(fields={"title_orginal", message="my.custom.message"})

и перевести это сообщение с помощью validators.xliff файл (он должен быть назван так).Я говорю вам об этом, потому что на днях я боролся с этим и был вынужден отладить, чтобы узнать об этом соглашении об именах validators.xliff.

...