#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
{