Doctrine 2 多主键

Posted

技术标签:

【中文标题】Doctrine 2 多主键【英文标题】:Doctrine 2 multiple primary keys 【发布时间】:2011-04-15 12:34:06 【问题描述】:

由于某种原因,Doctrine 试图插入一个名为 primary 的索引,而不是在我的 mysql 数据库上实际添加一个主键,这就是 Doctrine 生成的:

CREATE UNIQUE INDEX primary ON my_table (columnOne, columnTwo);

这是我的 SQL 编辑器生成的,这是唯一有效的方法:

ALTER TABLE my_table ADD PRIMARY KEY  (columnOne,columnTwo);

这是我的课:

....
class MyTable

    /**
     * @var integer $columnOne
     *
     * @Column(name="columnOne", type="integer", nullable=false)
     * @Id
     * @GeneratedValue(strategy="NONE")
     */
    private $columnOne;

    /**
     * @var integer $columnTwo
     *
     * @Column(name="columnTwo", type="integer", nullable=false)
     * @Id
     * @GeneratedValue(strategy="NONE")
     */
    private $columnTwo;

【问题讨论】:

你最后是怎么解决的? 【参考方案1】:

在此处添加有关多列唯一约束的信息,因为这是我在谷歌搜索时出现的。

如果你想要这样的 SQL:

CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)

在 Doctrine2 中使用这个注解

@Table(name="ecommerce_products",uniqueConstraints=@UniqueConstraint(name="search_idx", columns="name", "email"))

见:http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/annotations-reference.html#uniqueconstraint

【讨论】:

以上是关于Doctrine 2 多主键的主要内容,如果未能解决你的问题,请参考以下文章

Doctrine2 自定义类型不像主键 Symfony2 那样工作

Symfony 2 Doctrine 通过 id 的有序数组查找

Doctrine ORM:使用由外键组成的复合主键持久化集合

Symfony/Doctrine 类表继承和外键作为主键

如何在 ORM Doctrine2 中手动设置/保留主键

从父实体映射中将可嵌入字段设置为主键 - Doctrine2