在Doctrine 2中,如何将列标记为非主键?

时间:2016-07-07 19:19:04

标签: php mysql doctrine-orm doctrine

我的数据库中已经创建了一个表,其中包含2个键,一个是PRI键,另一个是MUL键。如何告诉Doctrine使用MUL键作为键来标记列?如果我理解正确,@ ID不会起作用,因为它不是主键,并且@Index不会起作用,因为该表已经创建。

目前代码如下:

/**
 * @ORM\Entity
 * @ORM\Table(name="mytablename")
 **/
class MyTablename implements IMyTablename
{
    /**
     * @ORM\Id
     * @ORM\Column(type="string", name="id", length=40)
     */
    protected $id;

    /**
     * @ORM\Column(type="string", name="ccode", length=5)
     */
    protected $ccode;

    ...

}

我想把ccode标记为关键。

1 个答案:

答案 0 :(得分:1)

Doctrine允许您通过@Index注释定义索引(UNIQUE,INDEX甚至是自Doctrine 2.5以来的FULLTEXT)。由于PRIMARY键在每个实体上都是必需的,因此它具有特殊的@Id注释。就是这样。

但是既然你已经在你的问题中提到了它,我想对于MUL键所扮演的真正角色存在误解,即。一个基本的指数。特别是,此类索引仅涉及性能,您的实体无法正常工作(当然,性能问题除外)。我鼓励您阅读更多关于索引的文献或澄清您的问题。