Symfony UniqueEntity vs UniqueConstraint vs unique = true

gen*_*sst 7 doctrine symfony doctrine-orm

任何人都可以解释@UniqueEntity验证器,@UniqueConstraint表注释和注释unique=true选项之间的概念差异@Column.

据我所知,在数据库级别@UniqueConstraint添加UNIQUE索引并@UniqueEntity在ORM级别上验证.那么我应该使用什么选项,还是使用它们?

Jak*_*zak 15

@UniqueConstraint并且unique=true 是Doctrine的一部分并做类似的事情.

当您unique=true在特定列上设置时,Doctrine将在此列中物理地在数据库中创建唯一键.

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

@UniqueEntity另一方面,它不是Doctrine的一部分,但它是Symfony框架的一部分.虽然Doctrine使用上述选项来生成正确的模式,但这个选项只是Symfony Form Component在提交表单时通常使用的验证器.

因此,要回答你的最后一个问题-是的,你平时应同时使用@UniqueEntity与一个@UniqueConstraintunique=true.