5
respostas

Trabalhando com vários schemas na mesma aplicação

Olá!

Eu estou desenvolvendo um programa que acessa um banco de dados Postgres que tem vários Schemas, só que ainda não entendi como que trabalha com eles. Eu entendi como que faz a conexão ao banco de dados, que seria utilizando o login e senha que eu defini no Postgres, já defini quais os Schemas que esse usuário terá permissão para executar consultas, porém não sei ainda como que eu utilizo o Doctrine ORM para realizar as consultas em cada Schema.

Eu fui ver no fórum da Doctrine ORM pra ver como definir o Schema da conexão, mas tudo o que encontrei foi que nos parâmetros da conexão eu tenho que colocar em "dbname" o nome do banco que eu quero acessar e o Schema, mas ele dá nenhum exemplo, então estou até agora tentando entender como colocar o schema junto na conexão ou como definir o Schema em que eu quero realizar as consultas.

Basicamente o que eu estou fazendo é o seguinte: eu pego o EntityManager (getEntityManager), pego o repository de alguma classe que eu quero (getRepository), aí eu tento fazer o findAll e não funciona, ele dá um erro de "Undefined table: 7 ERROR: relation "local" does not exist"

Alguém consegue me ajudar?

5 respostas

Fala, Cristofer. Não entendi bem sua dúvida, mas o Attribute Table possui o parâmetro schema:

https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/attributes-reference.html#attrref_table

Opa, boa tarde

Hoje o banco de dados tem vários Schemas, porém todos com as mesmas tabelas, todos os Schemas são idênticos, e basicamente nós criamos 1 Schema pra cada cliente nosso, por isso que as Classes são todas iguais pra todos. Eu queria ver se eu não conseguiria reaproveitar essas Classes em cada acesso em vez de multiplicar essas mesmas classes no meu código pra cada Schema.

E definir o schema no dbname não é suficiente?

Oi boa tarde, Vinicius!

Desde a época da postagem dessa pergunta eu tinha conseguido encontrar uma alternativa, mas agora não é mais viável continuar com essa alternativa, vamos ter que mudar.

Eu vi agora essa sua última resposta, e eu até tinha pensado nisso na época, mas não sei qual separador devo usar. O banco de dados é "prod_umov_dbview" e o schema é "u35556". Eu tinha tentado usar o '/', desse jeito: "prod_umov_dbview/u35556" mas não funcionou.

Você sabe me dizer qual separador devo usar?

prod_umov_dbview.u35556