Задать вопрос
@fattan
программист

В doctrine:mapping:import как сделать кастомизацию импорта на основе префиксов таблиц?

Никак не могу решение найти (и есть ли оно вообще)?
Есть с десяток бандлов. Каждому из которых соответствует набор таблиц в БД. Они разделяются префиксами, например:
BlogBundle = blog_document, blog_comment...
ForumBundle = forum_document, forum_comment...
RegBundle = reg_document, reg_comment...


Работу с таблицами осуществляю в phpMyAdmin и потом импортирую изменения посредством:
php bin/console doctrine:mapping:import --force BlogBundle yml --filter="BlogComment"


(так гораздо быстрее и удобнее чем yml писать)
И doctrine, само собой создает сущности и связи с префиксами, то есть: BlogComment, BlogDocument...

Но было бы удобнее следующее: в команде импорта задаешь префикс таблицы, чтобы он его игнорировал.
Например что-то вроде:
php bin/console doctrine:mapping:import --force BlogBundle yml --filter="Comment" --tablePrefix="blog"


А на выходе сущности и связи: Comment, Document. А прификс таблицы бы указывался в конфигурации:
# Document.orm.yml
AppBundle\Entity\Document:
    type: entity
    table: exp_document


Просто, удобно, но я такого не нашел. Мб кто-то встречал? Или есть идеи как просто реализовать?

p.s. единственная загвоздка - со связями типа blog_document -> reg_document. У меня эти сущности в разных бандлах хранятся, но доктрине это нормально не объяснишь...
  • Вопрос задан
  • 1276 просмотров
Подписаться 1 Оценить 4 комментария
Решения вопроса 1
@fattan Автор вопроса
программист
сама идея описанная в вопросе оказалась "не очень". Поменял подход на классический:
1. Создание моделей, 2. описание связей в конфиге, 3. генерация таблиц в БД
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Fortop
Tech/Team lead
На самом деле можно настроить чтобы Доктрина игнорировала префиксы.
Для этого нужно написать слушатель событий loadClassMetadata
Который и будет прописывать или игнорировать префиксы для тех или иных таблиц
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы