Вы находитесь на правильном пути с точки зрения конфигурации.Но имейте в виду, что эти соединения не инициируются поддоменом HTTP-запроса, а просто подключаются к другому серверу базы данных на основе вызова в реальном PHP-коде.
Ваша переменная env
DATABASE_CUSTOMER?_URL
должна указыватьподключение к экземпляру MySQL, что-то вроде 'mysql://user:secret@localhost/mydb'
И конфигурация доктрины YAML должна быть отформатирована немного по-другому и должна включать EntityManager
config.
doctrine:
dbal:
default_connection: customer1
connections:
customer1:
url: '%env(DATABASE_CUSTOMER1_URL)%'
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
customer2:
url: '%env(DATABASE_CUSTOMER2_URL)%'
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
orm:
default_entity_manager: customer1
entity_managers:
customer1:
connection: customer1
customer2:
connection: customer2
https://symfony.com/doc/current/doctrine/multiple_entity_managers.html
Теперь вы можете указать, какой Connection / EntityManager вы хотите использовать.Вы можете различить их, например.в ваших контроллерах по http хосту.
public function someAction(Request $request)
{
if ($request->getHttpHost() === 'customer2url.com') {
$em = $this->getDoctrine()->getManager('customer2');
} else {
$em = $this->getDoctrine()->getManager();
}
}
или хранилище вызовов
$this->getDoctrine()->getRepository(Entity::class, 'customer1')