Использовать существующую таблицу базы данных одного проекта для другого проекта в Laravel - PullRequest
0 голосов
/ 20 апреля 2019

Я создал отдельный каталог / проект интеграции (назовем его Project-Interface) в Laravel и создал новую БД (назовем ее DB-A) и 3 новые таблицы (table-a, table-b, table-c) - artisan migrate команда и модели, связанные с этим, а также в решении.

Теперь в Laravel есть другой проект (назовем его Project-Web), у которого есть своя собственная база данных (назовем его DB-B) и созданы собственные таблицы и модели (table-x, * 1008). * table-z).

Мне нужно сделать следующее:

  1. Могу ли я использовать DB-B table-x из интерфейса проекта, чтобы сохранить некоторые подробности в нем?
  2. Можно ли создать таблицы table-a, table-b и table-c из интерфейса проекта с помощью команды переноса в DB-B?
  3. Могу ли я добавить еще несколько столбцов в table-x из интерфейса проекта и использовать его?

Можно ли использовать существующее соединение с БД DB-B из файла env Project-Web и использовать его в env файле Project-Interface?

Если да, создаст ли он новую таблицу в DB-B Project-Web, если я создал ее из Project-Interface? Будут ли изменения отражаться и там? Кроме того, если я создал новые столбцы в table-x из Project-Interface, будет ли этот столбец отражен в Project-Web?

Таким образом, цель здесь в том, чтобы БД была одинаковой, и она должна быть общей, в которой она должна содержать все таблицы и все изменения, которые я делаю из Project-Interface или Project-Web, должна использовать DB-B. .

1 Ответ

0 голосов
/ 20 апреля 2019

Некоторые ответы:

  1. Похоже, что вы спрашиваете, можете ли вы написать в базу данных B в проекте A. Краткий ответ - да, если вы можете подключиться к нему, то вы можете написать к нему. База данных не знает, что вы подключаетесь из другого проекта Laravel или проекта, находящегося в другом репо - она ​​понимает только пользователей базы данных.

  2. Вы также можете запустить миграцию, принадлежащую другому проекту, но на основании информации, которую я пока предоставил, я бы посоветовал против этого. Я объясню больше ниже.

  3. Добавление столбцов в другую базу данных звучит как переформулировка вопроса 2, и мой ответ будет таким же.

Проблема, возникающая при смешивании миграций, заключается в том, что второй проект (project-Web) не может создать все свои таблицы. Это добавит сложности к:

  • создание новой среды разработки (например, при добавлении нового члена команды в проект)
  • создание автоматизированных тестов базы данных, которые нужно разбирать и заново создавать базу данных для каждого запуска
  • создание новой промежуточной / производственной среды

Учитывая, что вы хотите некоторой связи между двумя проектами, мне интересно, будет ли в порядке HTTP API? Это будет намного проще в управлении:

  • Все ваши таблицы хранятся в одном проекте, и вся ваша логика также хранится здесь. Это значительно упростит миграцию (и, следовательно, создание всех сред, о которых я упоминал ранее).
  • Вы можете предложить веб-сервис в одном проекте, чтобы предложить услуги чтения / записи для другого проекта. Это гораздо проще тестировать с точки зрения автоматизации: в проекте API вы можете запускать тесты API / HTTP, а в проекте клиента вы можете использовать mocks.
  • Этот подход позволит вам протестировать проекты изолированно и аккуратно, а затем, при желании, провести автоматическое интеграционное тестирование (например, путем развертывания обоих проектов на тестовом сервере с использованием CI / CD, запуска миграций и любых начальных файлов). и затем запускает тесты для одного, который заставляет оба проекта работать вместе в заданном порядке).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...