【问题标题】:Symfony UniqueEntity for two Fields doesn't work两个字段的 Symfony UniqueEntity 不起作用
【发布时间】:2017-04-17 05:19:17
【问题描述】:

我想在 companyID 和 personMailaddress 字段上使用唯一实体。 当我在字段中仅使用 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;

【问题讨论】:

    标签: php symfony unique-constraint


    【解决方案1】:

    要启用唯一性,您需要添加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;
    

    【讨论】:

    • 谢谢。我只是没有在我的问题中写下它。但我已经插入:使用 Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多