我正在尝试使用 Doctrine 迁移更改表名。
示例表名称是 model,我想将其更改为 new_model。
/**
* Class Model
*
* @package AppBundle\Entity
*
* @ORM\Table(name="new_model")
* @ORM\Entity(repositoryClass="AppBundle\Repository\ModelRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Model
{
......
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Product", inversedBy="products", fetch="EAGER", cascade={"persist"})
* @ORM\JoinColumn(name="product_id", referencedColumnName="id", nullable=false)
private $brand;
.......
要使用迁移脚本手动更改列名,我使用了:
$this->addSql('ALTER TABLE model RENAME new_model');
运行迁移后,关系(连接列)没有改变,仍然引用旧的列名。我也清除了缓存。
有人知道如何在不丢失关系数据的情况下更改表名和外键吗?
最佳答案
:(
清除缓存的正常方法缺少 Doctrine 的映射。
运行后: php bin/console d:c:clear-metadata
它又开始工作了。
关于mysql - Symfony Doctrine 迁移重命名表与关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47740899/