Doctrine ORM Таблица (имя = «name») не работает

#orm #doctrine-orm #laminas

#orm #doctrine-orm #laminas

Вопрос:

Мой класс сущности:

 use DoctrineORMMapping as ORM;

/**
 * CustomerEntity
 * @ORMEntity
 * @ORMTable(name="customers")
 * @ORMTable(uniqueConstraints={
 *   @ORMUniqueConstraint(name="email", columns={"email"}),
 * })
 * @ORMEntity(repositoryClass="CustomerV1RestCustomerCustomerRepository")
 */
class CustomerEntity
{
  

Но когда я добавляю клиента, он выдает эту ошибку, он ищет неправильную таблицу.

SQLSTATE[42S02]: базовая таблица или представление не найдены: 1146 Таблица «database.customerentity» не существует

Я пробовал с этим, но не помогает:

 @ORMTable(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
  

Комментарии:

1. Вы очистили свой кеш?

2. Я в режиме разработчика. И data/cache папка пуста.

Ответ №1:

Проблема в том, что Doctrine ожидает каждую аннотацию только один раз. Попробуйте это:

 use DoctrineORMMapping as ORM;

/**
 * @ORMTable(name="customers", uniqueConstraints={
 *   @ORMUniqueConstraint(name="email", columns={"email"}),
 * })
 * @ORMEntity(repositoryClass="CustomerV1RestCustomerCustomerRepository")
 */
class CustomerEntity
{
  

Ответ №2:

Это действительно расстраивает, после просмотра основных кодов ORM я смог точно определить проблему. У меня нет времени на дальнейшие исследования, чтобы проверить ошибку или это особенность (нормальное поведение).

Вставляя @ORMTable(name="customers") ниже uniqueConstraints , ORM может распознать имя таблицы.

 use DoctrineORMMapping as ORM;

/**
 * CustomerEntity
 * @ORMEntity
 * @ORMTable(uniqueConstraints={
 *   @ORMUniqueConstraint(name="email", columns={"email"}),
 * })
 * @ORMTable(name="customers")
 * @ORMEntity(repositoryClass="CustomerV1RestCustomerCustomerRepository")
 */
class CustomerEntity
{