Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony uniquentity vs UniqueConstraint vs unique=true_Symfony_Doctrine Orm_Doctrine - Fatal编程技术网

Symfony uniquentity vs UniqueConstraint vs unique=true

Symfony uniquentity vs UniqueConstraint vs unique=true,symfony,doctrine-orm,doctrine,Symfony,Doctrine Orm,Doctrine,有人能解释一下验证器、表注释和@Column注释选项之间的概念区别吗 我理解@UniqueConstraint在数据库级别添加唯一的索引,并且@uniquentity在ORM级别验证。那么,我应该使用什么选项,还是使用所有选项?如中所述,@UniqueConstraint注释用于在多个列上创建唯一约束,而unique=true用于一个列上的唯一约束 uniquentityvalidator的存在是为了显示友好的错误消息和唯一的数据库约束,其目的是确保您不存储重复的数据 因此,您的问题的答案是这样

有人能解释一下验证器、表注释和
@Column
注释选项之间的概念区别吗

我理解
@UniqueConstraint
在数据库级别添加
唯一的
索引,并且
@uniquentity
在ORM级别验证。那么,我应该使用什么选项,还是使用所有选项?

如中所述,
@UniqueConstraint
注释用于在多个列上创建唯一约束,而
unique=true
用于一个列上的唯一约束

uniquentityvalidator
的存在是为了显示友好的错误消息和唯一的数据库约束,其目的是确保您不存储重复的数据


因此,您的问题的答案是这样的-您应该同时使用数据库约束和
@UniqueValidator

@UniqueConstraint
unique=true
都是原则的一部分,并且做类似的事情

在特定列上设置
unique=true
时,Doctrine将在数据库中的该列上创建一个唯一键


@UniqueConstraint
可用于在数据库中创建多列上的唯一键(复杂唯一键)。但是如果您传递一个列,那么结果将与在该字段上使用
unique=true
完全相同

另一方面,
@uniquentity
不是教义的一部分,而是Symfony框架的一部分。虽然上面的选项被条令用来生成正确的模式,但这只是Symfony表单组件在提交表单时通常使用的验证器

因此,为了回答您的最后一个问题-是的,您通常应该同时使用
@uniquentity
@UniqueConstraint
unique=true
中的一个