Laravel ремесленник мигрировать, разные соединения, разные базы данных - PullRequest
0 голосов
/ 30 января 2020

В текущем проекте Laravel 6 CMS мне нужна база данных MySQL для самой CMS (например, управление пользователями) и 1-n баз данных SQLite, по одной для каждого подпроекта, с той же схемой, но разным содержанием.

С помощью промежуточного программного обеспечения я переключаюсь между различными подключениями к базе данных SQLite. Это хорошо работает!

Цель:

  1. создание файлов миграции для базы данных MySQL, а также для баз данных SQLite
  2. migrate MySQL базы данных и базы данных SQLite один за другим 2.

1., более подробно c

Вот как я пытаюсь установить соединение в файл миграции:

  • Schema::connection('mysql')->create('table_bar', function (.. в файле 2020_01_30_093133_create_table_bar. php
  • Schema::connection('sqlite')->create('table_foo', function (.. в файле 2020_01_30_092518_create_table_foo. php

Проблема:

  1. Как установить соединение с базой данных по умолчанию на лету?
  2. Как изменить базу данных (путь) для sqlite на лету?

1., Более детально c:

с php artisan migrate

  • таблицы будут успешно созданы как в MySQL, так и в SQLite
  • НО таблица миграции будет обновляться только (table_bar AND table_foo) в базе данных по умолчанию (заданной в файле .env, в моем случае 'mysql') или, конечно, когда мы ll php artisan migrate --databse = sqlite, затем в таблице миграции этого соединения

Мне нужно обновить таблицы миграции в обеих базах данных, в зависимости от соединения, помещенного в файл миграции (например, Schema::connection('mysql')->create)

2., Если 1. будет решено:

  • через скрипт Я хотел бы изменить путь для 1-n SQLite базы данных

  • через ремесленника, afaik это невозможно, с laravel это:

$path = storage_path("app/species_group_databases/{$name}.sqlite") config(["database.connections.sqlite.database" => $path])

Спасибо за любую помощь!

...