UniqueEntity

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 5.1,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

UniqueEntity

验证一个特定领域(或领域)的教义实体(是)是独一无二的。这是常用的,例如,防止新用户注册使用的电子邮件地址已经存在于系统中。

另请参阅

如果你想验证的所有元素的集合是独一无二的使用唯一约束

基本用法

假设您有一个用户实体有一个电子邮件字段。您可以使用UniqueEntity约束来保证电子邮件领域仍然是独特的在用户表中所有的行:

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
/ / src /实体/ User.php名称空间应用程序\实体;使用学说\ORM\映射作为ORM;/ /不要忘记以下使用声明! ! !使用ob娱乐下载\\学说\验证器\约束\UniqueEntity;使用ob娱乐下载\组件\验证器\约束作为断言;/ * * *@ORM* \实体@UniqueEntity(“电子邮件”)* /用户{/ * * *@ORM\列(name = "电子邮件",类型=“字符串”,长度= 255,独特的= true) *@Assert\电子邮件* /受保护的美元电子邮件;}

谨慎

这个约束并不提供任何保护竞态条件。他们可能发生在另一个实体保存由外部过程验证通过后,在此之前实体实际上是保存在数据库中。

谨慎

这个约束无法处理重复项的集合中发现还没有被保存为实体。你需要创建自己的验证器来处理这种情况。

选项

新兴市场

类型:字符串

实体管理器使用的名称进行查询来确定独特性。如果留空,正确的实体管理器将会决定这个类。出于这个原因,应该不需要使用这个选项。

entityClass

类型:字符串

默认情况下,查询执行确保唯一性使用当前类实例的存储库。然而,在某些情况下,如使用学说继承映射时,您需要执行查询在不同的存储库。使用这个选项来定义完全限定类名(FQCN)的原则与您想要使用存储库相关的实体。

errorPath

类型:字符串默认的:第一个字段的名称字段

如果违反约束的实体错误消息被绑定到第一个字段字段。如果有多个字段,您可能想将错误消息映射到另一个领域。

考虑一下这个例子:

  • 注释
  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24日25日26日
/ / src /实体/ Service.php名称空间应用程序\实体;使用学说\ORM\映射作为ORM;使用ob娱乐下载\\学说\验证器\约束\UniqueEntity;/ * * *@ORM* \实体@UniqueEntity(*字段={“主机”、“端口”},* errorPath =“端口”,*消息=”这个端口已经被使用,主机上。”* ) */< /span>服务{/ * * *@ORM\ ManyToOne (targetEntity =“App \实体\主机”)* /公共美元主机;/ * * *@ORM\列(类型=“整数”)* /公共美元港口;}

现在,将绑定到的消息港口场配置。

字段

类型:数组|字符串(默认的选项]

这需要选择的字段(或列表的字段)这个实体应该是唯一的。例如,如果您指定的电子邮件的名字在一个单一的UniqueEntity约束,那么它将执行组合价值是独一无二的(如两个用户可以有相同的电子邮件,只要他们没有相同的名称)。

如果你需要需要单独独特的两个字段(例如,一个独特的电子邮件一个独特的用户名),你使用两个UniqueEntity条目,每一个领域。

类型:数组|字符串

它定义了这个约束属于验证组或组。阅读更多关于验证组

ignoreNull

类型:布尔默认的:真正的

如果将此选项设置真正的,然后将允许多个实体有一个约束没有失败的验证的字段值。如果设置为,只有一个值是允许的,如果第二个实体也有一个值,验证会失败。

消息

类型:字符串默认的:这个值已经使用。

这个约束失败时显示的消息。这个消息是默认映射到第一个字段导致违反。当使用多个字段的约束,可以通过指定的映射errorPath财产。

信息可以包括{{value}}占位符来显示无效的字符串表示的实体。如果实体没有定义__toString ()方法,以下将使用通用的价值:<新兴市场>“对象的类__CLASS__进行了<逗号分隔id >”< /p>

在这个信息:您可以使用以下参数

参数 描述
{{value}} 当前(无效)值

有效载荷

类型:混合默认的:

这个选项可以用来连接任意特定领域的数据约束。配置的有效载荷不使用验证器组件,但是它的处理是完全取决于你。

例如,您可能想要使用几个错误级别以不同的方式来呈现没有约束,在前端取决于错误的严重性。

repositoryMethod

类型:字符串默认的:findBy

库的名称方法用于确定独特性。如果留空,findBy ()就会被使用。接收到作为其参数的方法字段名= >价值关联数组(字段名中的每个字段配置吗字段选项)。方法应该返回一个可数PHP变量

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。