验证在同一实体中提交的2的组合

时间:2017-05-21 12:02:29

标签: symfony

我有一个名为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;

1 个答案:

答案 0 :(得分:1)

您应该只有一个@Entity注释。尝试用此替换并清理缓存

/**
 * Note
 * @ORM\Entity(repositoryClass="EcoleBundle\Repository\NoteRepository")
 * @UniqueEntity(fields={"evaluation","etudiant"})
 * @ORM\Table(name="note")
 */