2016-12-02 13 views
0

フィールドcompanyIDとpersonMailaddressで一意のエンティティを使用したいとします。 フィールドにpersonMailだけを使用すると問題なく動作します。しかし、配列に次のような別のフィールドを追加すると、UniqueEntityは無視されます。2つのフィールドのSymfony UniqueEntityが機能しません。

/** 
* person 
* 
* @ORM\Table(name="person") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\personRepository") 
* @ORM\HasLifecycleCallbacks() 
* @UniqueEntity( 
*   fields={"personMail", "companyID"}, 
*   errorPath="personMail", 
*   message="ERROR_MAIL_DUPLICATE", 
*) 
* @Serializer\ExclusionPolicy("all") 
*/ 
class person 
{ 
    ... 
    /** 
    * @ORM\ManyToOne(targetEntity="company", inversedBy="persons") 
    * @ORM\JoinColumn(name="company", referencedColumnName="id", nullable=true) 
    * 
    */ 
    protected $companyID; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="personMail", type="string", length=150) 
    * @Assert\NotBlank(message="ERROR_MAIL_EMPTY") 
    * 
    * @Serializer\Expose 
    */ 
    private $personMail; 

答えて

0

あなたがUniqueEntityバリデータを追加して、列定義にuniqueを追加する必要がユニークを有効にします。

<?php 
use Doctrine\ORM\Mapping as ORM, 
    Doctrine\Common\Collections\ArrayCollection; 
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity, 
    Symfony\Component\Validator\Constraints as Assert; 

/** 
* person 
* 
* @ORM\Table(name="person") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\personRepository") 
* @ORM\HasLifecycleCallbacks() 
* @UniqueEntity( 
*   fields={"personMail", "companyID"}, 
*   errorPath="personMail", 
*   message="ERROR_MAIL_DUPLICATE", 
*) 
* @Serializer\ExclusionPolicy("all") 
*/ 
class person 
{ 
    ... 
    /** 
    * @ORM\Column(name="companyId", type="integer", unique=true) 
    * @ORM\ManyToOne(targetEntity="company", inversedBy="persons") 
    * @ORM\JoinColumn(name="company", referencedColumnName="id", nullable=true) 
    * 
    */ 
    protected $companyID; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="personMail", type="string", length=150, unique=true) 
    * @Assert\NotBlank(message="ERROR_MAIL_EMPTY") 
    * 
    * @Serializer\Expose 
    */ 
    private $personMail; 
+0

ありがとうございました。私はちょうど私の質問でそれを書かなかった。しかし、私はすでに次のものを挿入しています:symfony \ Bridge \ Doctrine \ Validator \ Constraints \ UniqueEntity; – kristof

関連する問題