我想向那些使用 Mysql + Doctrine ORM + Doctrine 迁移的人提出问题,我有一个关联:
/**
* @var User
*
* @ORM\ManyToOne(targetEntity="User")
* @ORM\JoinColumn(nullable=true)
*/
protected $sender;
(这里的重点是nullable=true
。有些属性是故意留下的)
- 我愿意
migraions:diff
- 用一块生成迁移sender_id VARCHAR(255) DEFAULT NULL
- 运行迁移
- 然后我再做
diff
一次,预计不会产生新的迁移 - 但不,我看到带有行的新文件
CHANGE sender_id sender_id VARCHAR(255) DEFAULT NULL
这意味着什么都不会改变,但是Mysql 驱动下的学说 dbal 并没有从实体注释中看到 DEFAULT NULL
我试图添加@ORM\Column(options={"default": NULL})
.
这有助于防止DEFAULT NULL
迁移,但在这种情况下,FK 和 Index被删除了。
也尝试添加columnDefinition="VARCHAR(255) DEFAULT NULL"
但也没有工作
你是如何解决这个问题的?