我需要使用我的实体的两个字段('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'
我的目标是在唯一约束上显示我的信息。
答案 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"})
* })