Doctrine orm 表已存在

Doctrine orm 表已存在,doctrine-orm,zend-framework2,Doctrine Orm,Zend Framework2,我在zend框架2中使用了条令2。下面是我的实体文件。问题是,当我尝试使用 ./vendor/bin/doctrine-module orm:validate-schema 指挥部 我犯了一个错误 [Doctrine\DBAL\Schema\SchemaException] The table with name 'database.opportunitycriteria' already exists. 我该怎么办 namesp

我在zend框架2中使用了条令2。下面是我的实体文件。问题是,当我尝试使用

./vendor/bin/doctrine-module orm:validate-schema
指挥部

我犯了一个错误

[Doctrine\DBAL\Schema\SchemaException]                               
The table with name 'database.opportunitycriteria' already exists.
我该怎么办

namespace Administration\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * OpportunityCriteria
 *
 * @ORM\Table(name="OpportunityCriteria")
 * @ORM\Entity
 */
class Criteria
{
/**
 * @var integer
 * @ORM\Id
 * @ORM\Column(name="criteria_id", type="integer", nullable=false)
 */
private $criteria_id;

/**
 * @var string
 *
 * @ORM\Column(name="description", type="string", nullable=false)
 */
private $description;
}

以及合适的getter和setter方法。

我终于找到了答案。OP的用例可能不同,但在我的例子中,这是因为错误配置了双向多对多关系

我拥有以下实体:

高级烹饪{
/**
*@ManyToMany(targetEntity=“Dish”)
*@ORM\JoinTable(name=“CuisineDish”,…)
*/
受保护的盘子;
}
班菜{
/**
*@ORM\ManyToMany(targetEntity=“烹饪”)
*@ORM\JoinTable(name=“CuisineDish”,…)
*/
受保护的美食;
}
缺少的是
@manytomy
注释的
inversedBy
mappedBy
属性。仅当关联是双向的时才需要这些

因此,现在正确映射的实体如下所示:

高级烹饪{
/**
*@ManyToMany(targetEntity=“Dish”,反过来是=“cuisines”)
*@ORM\JoinTable(name=“CuisineDish”,)
*/
受保护的盘子;
}
班菜{
/**
*@ORM\ManyToMany(targetEntity=“courine”,mappedBy=“dishers”)
*@ORM\JoinTable(name=“CuisineDish”,…)
*/
受保护的美食;
}
并且,
orm:validate schema
不再以异常退出

异常消息只是误导,因为此操作不会更改数据库。此外,只有在验证与数据库的同步时,才发现此问题,而不是仅在验证映射时(
--skip sync
)才发现此问题


我只是。

如果您想使用一个已安装的捆绑包使用的表名,可能会导致此错误消息。

是否有一个名为OpportunityCriteria的实体类?从外观上看,这只是意味着在某些实体类中,此行在@ORM\table(name)中重复了一次以上=“OpportunityCriteria”)现在,当我们使用Copy/paste编写代码时,这种错误通常会发生。我得到了这个错误,在实体目录中搜索@ORM\Table时,只会显示一个出现问题的表的名称。(这种错误通常发生在假设情况下。)能否请您提供
composer.json
,以便我可以回答这个问题?Ping@Benjamin,您可以提供您的用例数据吗?