Symfony 5.4同时使用Unique和Hostname时出现问题

lf5gs5x2  于 2023-01-17  发布在  其他
关注(0)|答案(1)|浏览(128)

我尝试在Syfony 5.4实体中同时使用唯一和主机名约束。

/**
 * @ORM\Column(name="domain", type="string", length=150, nullable=false, unique=true)
 * @Assert\NotBlank()
 * @Assert\Hostname()
 */
private $domain;

这个验证没有问题,但是当我添加Unique约束时,它失败了,并显示消息-这个值应该是数组类型|迭代器聚合。

/**
 * @ORM\Column(name="domain", type="string", length=150, nullable=false, unique=true)
 * @Assert\NotBlank()
 * @Assert\Unique()
 * @Assert\Hostname()
 */
private $domain;

我需要两个验证,是的,在这种情况下,它失败的数据库插入,但我想验证形式。如何正确的方式?
谢谢你DR

7xzttuei

7xzttuei1#

如果我没理解错的话,你想验证域(或主机名)在数据库表中是唯一的,在这种情况下,你必须使用UniqueEntity参见https://symfony.com/doc/current/reference/constraints/UniqueEntity.html
值得一提的是,这并不能保护您免受竞争条件的影响。

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * @ORM\Entity
 * @UniqueEntity("domain")
 */
class YourEntity
{
   /**
    * @ORM\Column(name="domain", type="string", length=150, nullable=false, unique=true)
    * @Assert\NotBlank()
    * @Assert\Hostname()
    */
    protected $domain;
}

相关问题