如何在各自的数据库中生成每个实体?

时间:2016-07-04 14:04:05

标签: php symfony doctrine-orm

有两个实体:ProfilesCars

实体Profiles与数据库X中的表相关,实体Cars与数据库Y中的表相关。

Doctrine配置:

doctrine:
    dbal:
        default_connection: cars
        connections:
            profiles:
               driver:   pdo_mysql
               host:     "%database_host_profiles%"
               port:     "%database_port_profile%"
               dbname:   "%database_name_profiles%"
               user:     "%database_user_profiles%"
               password: "%database_password_profile%"
               charset:  UTF8
            cars:
               driver:   pdo_mysql
               host:     "%database_host_cars%"
               port:     "%database_port_cars%"
               dbname:   "%database_name_cars%"
               user:     "%database_user_cars%"
               password: "%database_password_cars%"
               charset:  UTF8
    orm:
        auto_generate_proxy_classes: "%kernel.debug%"
        naming_strategy: doctrine.orm.naming_strategy.underscore
        connection: cars
        auto_mapping: true

当我运行以下命令时,两个实体在同一个数据库(cars)中生成:

app/console doctrine:schema:update

如何在各自的数据库中生成每个实体?

2 个答案:

答案 0 :(得分:0)

您必须在orm部分中定义实体管理器,并使用非默认em映射您要管理的包:

orm:
    entity_managers:
        profiles:
            auto_mapping: true
            connection: default
        cars:
            connection: other_connexion
            mappings:
                AcmeBundle1: ~
                AcmeBundle2: ~

答案 1 :(得分:0)

您可以将表名添加到实体映射到的数据库中,就像这样:

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="Database_Name.Table_Name")
 */
class MyEntity
{
    // ...
}