在數據庫級別,如果使用一個選項來定義UNIQUENESS,如下所示,則沒有區別。雖然@UniqueConstraint
在其文檔「」中讀取它僅在SchemaTool模式生成上下文中有意義,「它們之間是否存在ORM級別差異?我的意思是當我們運行查詢時,是否有不同的處理方式?@UniqueConstraint和@Column(unique = true)選項之間的Doctrine ORM級別差異
- @UniqueConstraint
- @Column(唯一=真)
實例 - @UniqueConstraint
CLASS
/**
* @ORM\Entity
* @ORM\Table(
* name="user",
* uniqueConstraints={
* @ORM\UniqueConstraint(columns={"email"})
* }
*)
*/
class User
{
/**
* @ORM\Column(name="email", type="string", length=100)
*/
private $email;
}
DQL
CREATE TABLE `user` (
`email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
UNIQUE KEY `UNIQ_8D93D649E7927C74` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
實例 - @Column - 獨特=真
CLASS
/**
* @ORM\Entity
* @ORM\Table(name="user")
*/
class User
{
/**
* @ORM\Column(name="email", type="string", length=100, unique=true)
*/
private $email;
}
DQL
CREATE TABLE `user` (
`email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
UNIQUE KEY `UNIQ_8D93D649E7927C74` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Btw。看起來你的第一個DQL是錯誤的,因爲你在'@ UniqueConstraint'上聲明瞭'name =「email_idx」',所以DQL也應該打印'UNIQUE KEY email_idx(email)'。 –
我的不好,意味着要刪除它。我會更新它。感謝您指出。 – BentCoder