doctrine生成公共模式之外的实体

时间:2013-09-24 20:34:20

标签: php postgresql symfony doctrine-orm entity

我看到我可以set the schema作为实体本身的一个选项,但是可以选择在公共架构之外生成实体吗?

这适用于公共架构

php app/console doctrine:mapping:convert xml ./src/Acme/BlogBundle/Resources/config/doctrine/metadata/orm --from-database --force
php app/console doctrine:mapping:import AcmeBlogBundle annotation
php app/console doctrine:generate:entities AcmeBlogBundle

可能是这样的:

php app/console doctrine:mapping:convert xml schema=Foo  ./src/Acme/BlogBundle/Resources/config/doctrine/metadata/orm --from-database --force

仅供参考我们使用PostgreSQL 8.x& 9.x作为我们的数据库& Symfony 2.1.3如果重要

更新:

我认为这是我正在寻找的,但需要一种方法来设置架构数组值:

/**
 * Sets the table name.
 *
 * @param string $name
 *
 * @return ClassMetadataBuilder
 */
public function setTable($name)
{
    $this->cm->setPrimaryTable(array('name' => $name));

    return $this;
}

更新#2

我认为可以在连接配置

中设置它

原始配置

# Doctrine Configuration
doctrine:
    dbal:
      default_connection: my_database
      connections:
        my_database:
          driver:   pdo_pgsql
          port:     5432
          dbname:   bar
          user:     foo_user
          password: foo_pass
          charset:  UTF8

设置架构:

# Doctrine Configuration
doctrine:
    dbal:
      default_connection: my_database
      connections:
        my_database:
          driver:   pdo_pgsql
          port:     5432
          dbname:   bar/Foo
          user:     foo_user
          password: foo_pass
          charset:  UTF8

2 个答案:

答案 0 :(得分:0)

请注意,如果你:

ALTER USER foo_user SET search_path=foo;

然后在schema foo中创建未指定的所有内容。如果你无法在Doctrine中解决它,你可以在PostgreSQL中解决它。

答案 1 :(得分:0)

我使用Symfony 3,我有3种不同的模式。要生成实体,我使用--filter选项,例如:

./bin/console doctrine:mapping:import --force --filter="Schema_name." MyBundle xml

然后执行其他命令以生成实体。对我来说工作很完美

编辑。 最后,架构名称必须以大写字母开头