目录和子目录中的Symfony2原则架构更新

问题描述 投票:0回答:1

我为许多客户提供了一种产品,但我想拥有一个代码库。 每个客户都需要对数据库(实体存储库)及其主题进行一些特定的更改。 每个客户都有自己的数据库。 我需要找到一种解决方案以在配置中定义每个必须读取的客户实体,以创建或更新其自己的数据库架构。

在我的捆绑包中,我在实体中具有此结构

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

感谢您的时间

php entity-framework symfony doctrine-orm doctrine
1个回答
1
投票

根据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
© www.soinside.com 2019 - 2024. All rights reserved.