Doctrine2防止默认关系索引

时间:2014-08-29 11:04:29

标签: symfony doctrine-orm

我使用doctrine annotations在symfony 2中定义了一个新实体。它与另一个表和唯一索引具有多对一关系,使用相同的列(parent_id, subset_index)

/**
 * @ORM\Table(name="mapping", uniqueConstraints={@ORM\UniqueConstraint(name="parent_subset_index", columns={"parent_id", "subset_index"})})
 * @ORM\Entity
 */
class Mapping
{
    /**
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="Record")
     * @ORM\JoinColumn(name="parent_id", referencedColumnName="id", nullable=false, onDelete="RESTRICT")
     */
    private $parent;

    /**
     * @ORM\Column(name="subset_index", type="integer")
     */
    private $subsetIndex;
}

doctrine:migrations:diff生成以下MySQL语句:

CREATE TABLE mapping (
    id INT AUTO_INCREMENT NOT NULL, 
    parent_id INT NOT NULL, 
    subset_index INT NOT NULL, 
    INDEX IDX_D87F7E0C727ACA70 (parent_id), 
    UNIQUE INDEX parent_subset_index (parent_id, subset_index), 
    PRIMARY KEY(id)
) 

如您所见,我最终得到了两个索引而不是parent_id,IDX_D87F7E0C727ACA70索引是不必要的。

如何防止教条生成此索引?我知道我可以编辑迁移文件,但每次运行另一个doctrine:migrations:diff时都会重新创建索引。

0 个答案:

没有答案