任何人都可以解釋@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