在数据库级别,使用一个选项与另一个选项来定义时没有区别独特性如下所示。虽然@UniqueConstraint
在其文档中读取“它仅在 SchemaTool 模式生成上下文中有意义“,两者之间是否存在 ORM 级别差异?我的意思是,当我们运行查询时,事情的处理方式是否有所不同?
- @UniqueConstraint http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/annotations-reference.html#uniqueconstraint
-
@Column http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/annotations-reference.html#annref-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 - unique=true
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;