2

我看到我可以将架构设置为实体本身的一个选项,但是是否有一个选项可以在公共架构之外生成实体?

以下是适用于公共模式的方法

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
4

2 回答 2

0

只是指出,如果你:

ALTER USER foo_user SET search_path=foo;

然后在模式 foo 中创建未另行指定的所有内容。如果在 Doctrine 中无法解决,可以在 PostgreSQL 中解决。

于 2013-11-18T07:49:45.933 回答
0

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

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

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

编辑。最后一件事,模式名称必须以大写开头

于 2018-01-09T19:54:47.753 回答