php 如何使用Symfony & Doctrine ORM更新PostgreSQL中的多模式

qxgroojn  于 2023-02-15  发布在  PHP
关注(0)|答案(2)|浏览(146)

我们有一个使用Doctrine ORM的Symfony(2.8.26)项目。
我们设法在一个数据库中使用多个模式连接到PostgreSQL。
现在,当我们更新任何实体并执行命令php app/console doctrine:schema:update时,它只更新PostgreSQL的公共模式。
如何更新PostgresSQL中的所有模式?

uxh89sit

uxh89sit1#

也许这是一个“为时已晚”的答案,但Doctrine将允许您简单地在Table注解中指定PostgreSQL模式:

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

#[ORM\Entity]
#[ORM\Table(schema: 'name')] // <-- whatever schema you need here.
class Entity {
    //...
}

我发现它在任何地方都能很好地工作,除了自动生成的迁移。由于某种原因,schema工具没有将自定义schema插入到索引名称中,所以涉及索引删除的向下迁移失败,并抱怨索引不存在。

n53p2ov0

n53p2ov02#

您可以在配置文件中创建多个实体管理器。之后,您可以根据需要更新任何方案。让我们假设您有两个实体管理器:foo foobar。然后以下命令将更新相关模式:

php app/console doctrine:schema:update --force --em=foo
 php app/console doctrine:schema:update --force --em=bar

Symfony有很好的文档。

相关问题