У меня есть один продукт для многих клиентов, но я хочу иметь одну базу кода. Каждому клиенту нужны определенные изменения в базе данных (репозитории объектов) и в его собственных темах. У каждого клиента есть своя база данных. Мне нужно найти решение для определения в конфигурации для каждого клиента, который должен быть прочитан для создания или обновления его собственной схемы базы данных.
В моих связках у меня есть эта структура в сущностях
Acme\JobBundle\Entities\Customer.php
Acme\JobBundle\Entities\Customer1\Customer.php
Acme\JobBundle\Entities\Customer2\Customer.php
Acme\JobBundle\Entities\Customer3\Customer.php
Acme\JobBundle\Entities\Customer.php is an abstract class
Acme\JobBundle\Entities\Customer1\Customer.php extends Acme\JobBundle\Entities\Customer.php
Спасибо за ваше время
Соответственно Symfony2 док:
Вы можете определить менеджеров нескольких сущностей и связанное отображение:
doctrine:
dbal:
default_connection: default
connections:
default:
driver: "%database_driver%"host: "%database_host%"port: "%database_port%"dbname: "%database_name%"user: "%database_user%"password: "%database_password%"charset: UTF8
customer:
driver: "%database_driver2%"host: "%database_host2%"port: "%database_port2%"dbname: "%database_name2%"user: "%database_user2%"password: "%database_password2%"charset: UTF8
orm:
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
AppBundle: ~
AcmeStoreBundle: ~
customer:
connection: customer
mappings:
AcmeCustomerBundle: ~
И, конечно, вы можете создать свою схему следующим образом:
# Play only with "default" mappings
$ php app/console doctrine:schema:update --force
# Play only with "customer" mappings
$ php app/console doctrine:schema:update --force --em=customer
Других решений пока нет …