Как использовать фильтр импорта доктрины как строгий?

Я пытаюсь импортировать одну таблицу из базы данных с помощью следующей команды:

php bin/console doctrine:mapping:import --force InventBundle xml  --filter = "invent"

но не работает я получаю следующее сообщение:

Table invent2 has no primary key. Doctrine does not support reverse engineering from tables that don't have a primary key.

Я не могу удалить invet2, но мне нужно импортировать только таблицу изобретений.

Есть идеи?

Редактировать: Проблема в том, что фильтр не использует одинаковые, и invent и invent2 созданы для filter = "invet", но единственный invent2 основан при использовании filter = "invent2".

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
2
0
723
1

Ответы 1

У меня такая же проблема, как и у вас. Параметр --фильтр, похоже, не работает (в моем случае я использую несколько подключений к базе данных, возможно, поэтому)

Вот как я это решил:

В вашем файле app/config/config.yml вам нужно будет добавить "schema_filter". В этом случае Doctrine, похоже, использует preg_match, поэтому вам нужно использовать такой синтаксис, чтобы соответствовать имени вашей таблицы:

schema_filter: ~^YourTableName$~

Примечание: Если вы используете Symfony4, то ваш интересующий файл - config/packages/doctrine.yaml

Вот полный фрагмент:

// app/config/config.yml
doctrine:
    dbal:
        driver:   pdo_mysql
        host:     "%database_host%"
        port:     "%database_port%"
        dbname:   "%database_name%"
        user:     "%database_user%"
        password: "%database_password%"
        schema_filter: ~^YourTableName$~

Другие вопросы по теме