Doctrine:为不同的连接\实体管理器使用不同的实体字段

时间:2015-06-03 14:56:51

标签: php symfony doctrine-orm

我有两个Doctrine连接(postgres和sqlite)和实体:

class MyEntity
{
    /**
     * @ORM\Column(type="my_custom_type")
     */
    private $field_for_pg;

    /**
     * @ORM\Column(type="integer")
     */
    private $field_1_for_sqlite;

    /**
     * @ORM\Column(type="integer")
     */
    private $field_2_for_sqlite;
}

我想要两个不同的表:

  • 在postgres数据库中使用“field_for_pg”列
  • 在sqlite数据库中使用“field_1_for_sqlite”和“field_2_for_sqlite”列

如何实施?

2 个答案:

答案 0 :(得分:0)

Doctrine实体每个实体使用一个表。 (不包括与其他实体的关系)。

所以你应该将你的实体划分为两个实体。

答案 1 :(得分:0)

你应该使用一个为Postgre配置的实体管理器,另一个用于sqlite,每个实体管理器都有一个他处理的实体目录。

doctrine:
    orm:
        default_entity_manager:   default
        entity_managers:
            postgre:
                connection:       postgreconnection
                mappings:
                    AppBundle:
                        dir:      Path/To/EntityFolder1
            sqli:
                connection:       sqliconnection
                mappings:
                    AppBundle:
                        dir:      Path/To/EntityFolder2

这样,当您需要为sqli使用sqli实体管理器等持久保存一个实体时,您的实体将在这两个连接之间分离和处理。

Using Doctrine 2 Entity with different databases