Doctrine 2多个主键

Den*_*nis 7 php mysql orm doctrine-orm

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

CREATE UNIQUE INDEX primary ON my_table (columnOne, columnTwo);
Run Code Online (Sandbox Code Playgroud)

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

ALTER TABLE my_table ADD PRIMARY KEY  (columnOne,columnTwo);
Run Code Online (Sandbox Code Playgroud)

这是我的班级:

....
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;
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*raf 1

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

如果你想要这样的 SQL:

CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
Run Code Online (Sandbox Code Playgroud)

在 Doctrine2 中使用此注释

@Table(name="ecommerce_products",uniqueConstraints={@UniqueConstraint(name="search_idx", columns={"name", "email"})})
Run Code Online (Sandbox Code Playgroud)

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