原则ORM \ Tablename =“ name”无效

问题描述

我的实体类

use Doctrine\ORM\Mapping as ORM;

/**
 * CustomerEntity
 * @ORM\Entity
 * @ORM\Table(name="customers")
 * @ORM\Table(uniqueConstraints={
 *   @ORM\UniqueConstraint(name="email",columns={"email"}),* })
 * @ORM\Entity(repositoryClass="Customer\V1\Rest\Customer\CustomerRepository")
 */
class CustomerEntity
{

但是当我添加一个客户时,它将引发此错误,它正在寻找错误的表。

sqlSTATE [42S02]:未找到基表或视图:1146表 'database.customerentity'不存在

我确实尝试过,但没有帮助:

@ORM\Table(name="`customers`")

模式生成显示以下内容

$ doctrine-module orm:schema-tool:update --dump-sql

 The following sql statements will be executed:

 CREATE TABLE CustomerEntity (id VARCHAR(36) NOT NULL,.....

我在做什么错了?

我也清除了缓存

orm:clear-cache:Metadata
orm:clear-cache:query
orm:clear-cache:result

解决方法

您遇到的问题是,Doctrine仅期望每个注释一次。试试这个:

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Table(name="customers",uniqueConstraints={
 *   @ORM\UniqueConstraint(name="email",columns={"email"}),* })
 * @ORM\Entity(repositoryClass="Customer\V1\Rest\Customer\CustomerRepository")
 */
class CustomerEntity
{
,

这真令人沮丧,在经历了ORM核心代码之后,我能够找出问题所在。没有时间进行进一步调查以验证错误,或者这是一项功能(正常行为)。

通过在@ORM\Table(name="customers")下方插入uniqueConstraints,ORM能够识别表名。

use Doctrine\ORM\Mapping as ORM;

/**
 * CustomerEntity
 * @ORM\Entity
 * @ORM\Table(uniqueConstraints={
 *   @ORM\UniqueConstraint(name="email",* })
 * @ORM\Table(name="customers")
 * @ORM\Entity(repositoryClass="Customer\V1\Rest\Customer\CustomerRepository")
 */
class CustomerEntity
{