我想在字段companyID和personMailaddress上使用Unique实体。 当我在字段中仅使用personMail时,它可以正常工作。但是当我向数组添加另一个字段时,如下所示,它会忽略我的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 :(得分: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;