Validation 具有唯一约束的Symfony2验证异常

Validation 具有唯一约束的Symfony2验证异常,validation,orm,doctrine-orm,symfony,Validation,Orm,Doctrine Orm,Symfony,我有一个实体“电影”,它通过条令注释具有唯一的约束。基于电影实体,我自动生成了一个积垢层。当我现在尝试添加新电影时,出现以下异常: 只有由条令映射的字段名才能验证唯一性 删除约束后,一切正常。有人知道问题在哪里,我如何解决它吗 我猜是实体,因为它是新的,与EntityManager不同步,因此无法检查约束。我接近了吗 我使用Symfony 2.0.1和Doctrine 2.1.1,MySQL作为数据库 谢谢, -孤独的 电影实体: /** * @ORM\Table() * @ORM\Enti

我有一个实体“电影”,它通过条令注释具有唯一的约束。基于电影实体,我自动生成了一个积垢层。当我现在尝试添加新电影时,出现以下异常:

只有由条令映射的字段名才能验证唯一性

删除约束后,一切正常。有人知道问题在哪里,我如何解决它吗

我猜是实体,因为它是新的,与EntityManager不同步,因此无法检查约束。我接近了吗

我使用Symfony 2.0.1和Doctrine 2.1.1,MySQL作为数据库

谢谢,
-孤独的

电影实体:

/**
 * @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;

  ..
你的语法错了。 使用以下命令:

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

@DoctrineAssert\UniqueEntity("title_orginal")
然后,您可以按如下方式自定义冲突消息:

@DoctrineAssert\UniqueEntity(fields={"title_orginal", message="my.custom.message"})
并使用
validators.xliff
文件翻译此消息(必须这样命名)。 我之所以告诉你这一点,是因为前几天我在这方面遇到了困难,不得不进行调试,以找到关于validators.xliff命名约定的信息。

你的语法是错误的。 使用以下命令:

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

@DoctrineAssert\UniqueEntity("title_orginal")
然后,您可以按如下方式自定义冲突消息:

@DoctrineAssert\UniqueEntity(fields={"title_orginal", message="my.custom.message"})
并使用
validators.xliff
文件翻译此消息(必须这样命名)。
我之所以告诉你这一点,是因为前几天我在这方面遇到了困难,不得不进行调试,以找到关于validators.xliff命名约定的信息。

我认为有一个小错误:

@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")

我认为有一个小的拼写错误:

@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")

没有??所以,若它不是一个注释,那个么它还有什么呢?当然是用
@
。对不起,打错了。我将您的原始代码添加到我的帖子中,这样您就可以更容易地发现差异。没有@?所以,若它不是一个注释,那个么它还有什么呢?当然是用
@
。对不起,打错了。我在我的帖子中添加了你的原始代码,这样你就可以更容易地发现差异。那么呢?你解决你的问题了吗?那么?你解决问题了吗?