出于某种原因,我使用生成迁移
php app/console doctrine:migrations:diff
我得到了像FK_FFE561C6BE3BD8D4和IDX_FFE561C6BE3BD8D4这样的约束和索引的奇怪名称:
$this->addSql("ALTER TABLE agent_task ADD agentConfig_id INT UNSIGNED DEFAULT NULL, DROP agent_id");
$this->addSql("ALTER TABLE agent_task ADD CONSTRAINT FK_FFE561C6BE3BD8D4 FOREIGN KEY (agentConfig_id) REFERENCES agent_config (id)");
$this->addSql("CREATE INDEX IDX_FFE561C6BE3BD8D4 ON agent_task (agentConfig_id)");
实体代码段:
/**
* @var AgentConfig
*
* @ORM\ManyToOne(targetEntity="AgentConfig",inversedBy="agentTasks")
* @ORM\JoinColumn(name="agent_config_id", referencedColumnName="id")
*/
private $agentConfig;
有没有办法为这些名称定义名称?
UPDATE
我试过索引,但没有帮助 .
/**
* AgentTaskConfig
*
* @ORM\Table(name="agent_task_config", indexes={@ORM\index(name="agent_task_config_task_id", columns={"task_id"})})
* @ORM\Entity
*/
class AgentTaskConfig
还在发生:
$this->addSql("ALTER TABLE agent_task_config DROP FOREIGN KEY fk_agent_task_id");
$this->addSql("ALTER TABLE agent_task_config ADD CONSTRAINT FK_7FEDF0EF8DB60186 FOREIGN KEY (task_id) REFERENCES agent_task (id)");
2 回答
有更多的时间我调查了doctrine的(v2.4.x)SchemaTool.php来完成这一代 . 看起来他们正在使用方法:
这说明了一切 . 它被标记为已弃用,链接指向:
这个方法有$ constraintName参数,现在没有使用 . 我想唯一的方法是编辑Schema工具以使用后一种方法传递你自己的$ constraintName .
约束名称生成如下所示:
您可以在实体上自己定义索引