我看到我可以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
答案 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
然后执行其他命令以生成实体。对我来说工作很完美
编辑。 最后,架构名称必须以大写字母开头