2016-12-02 5 views
0

Ich möchte eine eindeutige Entität über die Felder companyID und personMailadresse verwenden. Wenn ich nur die personMail in den Feldern verwende funktioniert es ohne Probleme. Aber wenn ich wie unten ein anderes Feld zum Array hinzufüge, ignoriert es meine UniqueEntity.Symfony UniqueEntity für zwei Felder funktioniert nicht

/** 
* 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; 

Antwort

0

einzigartig Damit Sie die UniqueEntity Validator hinzufügen müssen und unique auf die Spaltendefinition hinzufügen.

<?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

Danke. Ich habe es einfach nicht in meine Frage geschrieben. Aber ich füge schon ein: benutze Symfony \ Bridge \ Doctrine \ Validator \ Constraints \ UniqueEntity; – kristof

Verwandte Themen