symfony2具有多对一字段的UniqueEntity

时间:2013-11-29 09:29:22

标签: symfony doctrine-orm unique-constraint

我需要使用我的实体的两个字段('number'和'mag')创建唯一约束,但mag是多个到一个字段。

/**
* @ORM\ManyToOne(targetEntity="Magazine", inversedBy="magazine_numbers")
* @ORM\JoinColumn(name="magazine_id", referencedColumnName="id")
*/
public $mag;

我试着这样做

/**
* MagazineNumber
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Creative\NicrpBundle\Entity\MagazineNumberRepository")
* @UniqueEntity(fields={"magazine_id", "number"}, message="There already is such a magazine number.")
*/
class MagazineNumber

但它异常

  

字段'magazine_id'未由Doctrine映射,因此无法验证其唯一性。

我试过这样做

* @ORM\Table(uniqueConstraints={
*     @ORM\UniqueConstraint(name="magazine_number_uk", columns={ "magazine_id", "number"})
* })

但它异常

SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2-1' for key 'magazine_number_uk'

我的目标是在唯一约束上显示我的信息。

2 个答案:

答案 0 :(得分:1)

尝试使用varnames而不是列名。

/**
* MagazineNumber
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Creative\NicrpBundle\Entity\MagazineNumberRepository")
* @UniqueEntity(fields={"mag", "number"}, message="There already is such a magazine number.")
*/
class MagazineNumber

答案 1 :(得分:0)

试着这样做:

* @ORM\Table(uniqueConstraints={
*     @ORM\UniqueConstraint(name="magazine_number_uk", columns={ "mag", "number"})
* })