Как использовать доктрину импорта в качестве строгого фильтра? - PullRequest
0 голосов
/ 27 августа 2018

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

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

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

Таблица Invent2 не имеет первичного ключа. Учение не поддерживает обратное разработка из таблиц, которые не имеют первичного ключа.

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

Есть идеи?

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

1 Ответ

0 голосов
/ 17 октября 2018

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

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

В вашем 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$~
...