任何人都可以解释@UniqueEntity
验证器,@UniqueConstraint
表注释和unique=true
选项@Column
注释之间的概念区别是什么。Symfony UniqueEntity vs UniqueConstraint vs unique = true
据我所知,@UniqueConstraint
在数据库级别添加了UNIQUE
索引,@UniqueEntity
在ORM级别上进行了验证。那么我应该使用什么选项,还是我全部使用它们?
任何人都可以解释@UniqueEntity
验证器,@UniqueConstraint
表注释和unique=true
选项@Column
注释之间的概念区别是什么。Symfony UniqueEntity vs UniqueConstraint vs unique = true
据我所知,@UniqueConstraint
在数据库级别添加了UNIQUE
索引,@UniqueEntity
在ORM级别上进行了验证。那么我应该使用什么选项,还是我全部使用它们?
@UniqueConstraint
和unique=true
是Doctrine的一部分,并做类似的事情。
当你在一个特定的列设置unique=true
,然后将学说物理数据库创建此列一个独特的密钥。
@UniqueConstraint
可用于创建在多个列上数据库一个唯一的密钥(复杂唯一密钥)。但是,如果您传递一个列,则结果将与在该字段上使用unique=true
完全相同。
@UniqueEntity
另一方面不属于Doctrine的一部分,但是它是Symfony框架的一部分。虽然上述选项被Doctrine用于生成正确的模式,但这只是在提交表单时通常由Symfony表单组件使用的验证器。
因此,要回答你的最后一个问题 - 是的,你平时应同时使用@UniqueEntity
和@UniqueConstraint
或unique=true
之一。
如documentation,@UniqueConstraint
中所述,当对一列使用unique=true
作为唯一约束时,注释用于在多个列上创建唯一约束。
UniqueEntityValidator
存在以显示友好的错误消息和唯一的数据库约束的目的是确保您不会存储重复的数据。
所以你的问题的答案是这样的 - 你应该使用数据库约束和@UniqueValidator
。
https://stackoverflow.com/questions/33196548/doctrine-orm-level-difference-between-uniqueconstraint-and-columnunique-true – BentCoder