Symfony 5 (Doctrine 2.9),Doctrine 不会为 ManyToOne 自引用关系生成迁移
Symfony 5 (Doctrine 2.9), Doctrine does not generate migration for a ManyToOne self-referencing relation
我在一个项目上使用 Symfony 5 和 Doctrine 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
我在一个项目上使用 Symfony 5 和 Doctrine 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