我使用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
时都会重新创建索引。