我目前正在做一个symfony投资组合项目,在项目过程中我不得不重新安装xampp。由于我没有保存我的数据库,我丢失了它。我尝试用以下命令重新创建它:
php bin/console doctrine:database:create
php bin/console make:migration
php bin/console doctrine:migrations:migrate
但是我得到了这个错误
The table with name "portfolio.project_tag" already exists.
为了给你上下文,我的实体是'项目','标签'和'类别'。项目和标签有多多多关系,因为每个项目可以有许多标签,每个标签可以有许多项目。项目和类别也有一个onetmany关系,因为每个项目都在一个类别中,每个类别可以有多个项目。我也有"用户"实体进入我的管理仪表板。
我试着删除所有链接的实体(项目,类别和标签),但它只会让事情变得更糟。我不明白为什么这个表已经存在了,因为我一开始就没有数据库。
另外,在我像个白痴一样不小心抑制了我的数据库之前,我的表没有任何问题。
如果你需要更多的细节请告诉我,谢谢你的帮助。
我试图抑制所有与投资组合相关的行。Project_tag表在我的迁移文件,但它没有工作
在我的例子中,我有两个不同的manymany关系,它们在相同的两个实体(Program和Participant)之间服务于不同的目的,并使用make:entity来创建它们。但是,命令行工具不会要求您为连接表提供名称,因此当您尝试更新它使用的模式时,它会使用两者的默认名称,在本例中为participant_program
。
为了解决这个问题,显式地为manymany命名连接表,例如
-
@ORMManyToMany(targetEntity="AppEntityProgram", inversedBy="enrolled_participants")
-
@ORMJoinTable( name="enrolled_programs", joinColumns={
-
@ORMJoinColumn(name="participant_id", referencedColumnName="id") }, inverseJoinColumns={
-
@ORMJoinColumn(name="program_id", referencedColumnName="id") } )
private $enrolled_programs;