Anu*_*Anu 27 mysql symfony doctrine-orm
我正在使用MySql使用Symfony2和Doctrine ORM.
创建实体后,我无法创建表.它引发了一个例外.
anu@anu-bridge:/var/www/Symfony$ php app/console doctrine:schema:update --force --dump-sql
[Doctrine\DBAL\Schema\SchemaException]
The table with name 'product' already exists.
doctrine:schema:update [--complete] [--dump-sql] [--force] [--em[="..."]]
Run Code Online (Sandbox Code Playgroud)
我试图放弃它,但仍然会抛出错误.
anu@anu-bridge:/var/www/Symfony$ php app/console doctrine:schema:drop --force
Dropping database schema...
[Doctrine\DBAL\Schema\SchemaException]
The table with name 'product' already exists.
doctrine:schema:drop [--dump-sql] [--force] [--full-database] [--em[="..."]]
[Doctrine\DBAL\Schema\SchemaException]
The table with name 'product' already exists.
Run Code Online (Sandbox Code Playgroud)
数据库中没有表.清除了symfony和doctrine的所有缓存,但仍然是错误抛出.
Symfony2版本是2.0.1.
Fed*_*ina 47
我有类似的问题.很可能你在不同的Bundles中有两个名为Category的实体.例如:
src/Acme/SomeBundle/Entity/Product.php
src/Acme/OtherBundle/Entity/Product.php
Run Code Online (Sandbox Code Playgroud)
注释其中一个文件并重试控制台命令.
Ons*_*hop 10
我从与关联类注释中定义的连接表和ManyToMany注释中定义的连接表的冲突中得到此问题.
具有直接ManytoMany关系的两个实体中的映射定义似乎导致使用'joinTable'注释自动创建连接表.但是,连接表已经在其底层实体类中由注释定义,我希望它使用此关联实体类自己的字段定义,以便使用其他自定义字段扩展连接表.
解释和解决方案归功于论坛" Doctrine Annotation Question " 中的这篇文章.这篇文章提请注意关于ManyToMany单向关系的Doctrine文档.查看关于使用"关联实体类"的方法的注释,从而直接在两个主要实体类之间替换多对多注释映射,在主要实体类中使用一对多注释和两个"多 - 到" - 关联实体类中的一个'注释.此论坛中提供了一个示例,其中包含附加字段的关联模型:
public class Person
{
/**
* @OneToMany(targetEntity="AssignedItems", mappedBy="person")
*/
private $assignedItems;
}
public class Items
{
/**
* @OneToMany(targetEntity="AssignedItems", mappedBy="item")
*/
private $assignedPeople;
}
public class AssignedItems
{
/**
* @ManyToOne(targetEntity="Person")
* @JoinColumn(name="person_id", referencedColumnName="id")
*/
private $person;
/**
* @ManyToOne(targetEntity="Item")
* @JoinColumn(name="item_id", referencedColumnName="id")
*/
private $item;
}
Run Code Online (Sandbox Code Playgroud)