Symfony 5 (Doctrine 2.9),Doctrine 不会为 ManyToOne 自引用关系生成迁移

Symfony 5 (Doctrine 2.9), Doctrine does not generate migration for a ManyToOne self-referencing relation

我在一个项目上使用 Symfony 5Doctrine 2.9,我需要在同一个 Table(自引用)。

为此,我使用了以下 link https://www.doctrine-project.org/projects/doctrine-orm/en/2.9/reference/association-mapping.html

对于一对多、自引用关系,它表示:

<?php
/** @Entity */
class Category
{
    // ...
    /**
     * One Category has Many Categories.
     * @OneToMany(targetEntity="Category", mappedBy="parent")
     */
    private $children;

    /**
     * Many Categories have One Category.
     * @ManyToOne(targetEntity="Category", inversedBy="children")
     * @JoinColumn(name="parent_id", referencedColumnName="id")
     */
    private $parent;
    // ...

    public function __construct() {
        $this->children = new \Doctrine\Common\Collections\ArrayCollection();
    }
}

感谢我可以使用 php bin/console make:entity 更新我的实体并添加所需的关系。

问题是,当我的实体用新关系更新时,我做了一个 php bin/console make:migration 来生成所需的迁移,但没有检测到任何变化。

这并不重要,因为我可以手动生成迁移,但是当我手动更新我的 table 时,通过添加外键和关联的索引,在下一次迁移时,学说建议我删除外键、索引和属性 (parent_id).

是否有解决这个问题的方法?

谢谢你的时间,

纪尧姆

您必须使用此命令清理您的 Doctrine 缓存(这取决于您的配置):

$ bin/console doctrine:cache:clear-metadata