我有一个名为Note的实体,用于每个Note的 etudiant_id 和 evaluation_id 。
我希望etudiant_id和evaluation_id的组合应该是唯一的
例如,当我给他一个Note object1(etudiant_id=1,evaluation_id=1) and Note2 object2(etudiant_id=1,evaluation_id=1)
时:这应该抛出异常。
但是
如果:
Note object1(etudiant_id=1,evaluation_id=2) and Note2 object2(etudiant_id=1,evaluation_id=1)
:这不会抛出任何东西
顺便说一句,我试过了* @UniqueEntity(fields={"evaluation","etudiant"})
,但这并没有起到相应的作用
这是我的笔记实体:
<?php
namespace EcoleBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* Note
* @ORM\Entity
* @UniqueEntity(fields={"evaluation","etudiant"})
* @ORM\Table(name="note")
* @ORM\Entity(repositoryClass="EcoleBundle\Repository\NoteRepository")
*/
class Note
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var float
*
* @ORM\Column(name="valeur", type="float", nullable=true)
*/
private $valeur;
/**
* @ORM\ManyToOne(targetEntity="EcoleBundle\Entity\Evaluation", inversedBy="notes")
*/
private $evaluation;
/**
* @ORM\ManyToOne(targetEntity="EcoleBundle\Entity\Etudiant", inversedBy="notes")
*/
private $etudiant;
答案 0 :(得分:1)
您应该只有一个@Entity注释。尝试用此替换并清理缓存
/**
* Note
* @ORM\Entity(repositoryClass="EcoleBundle\Repository\NoteRepository")
* @UniqueEntity(fields={"evaluation","etudiant"})
* @ORM\Table(name="note")
*/