Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Usar vista de base de datos como entidad en Symfony

16 de septiembre de 2016

Estimados

Tengo una duda. Tengo varias bases de datos con la misma estructura.

Ejemplo: tengo una tabla de

  • usuario_1 en bd_1
  • usuario_2 en bd_2
  • usuario_3 en bd_3
  • ....
  • usuario_N en bd_N

Lo que quiero realizar es hacer una vista que contenga todas las tablas usuarios y usarla como una entidad.

Solo son de consulta.

¿Se puede?


Respuestas

#1

Nunca he necesitado usar vistas en Doctrine, pero según esta respuesta, podrías usar la vista como si fuera una tabla normal mediante la anotación @ORM\Table:

/**
 * @ORM\Entity
 * @ORM\Table(name="nombre_de_la_vista")
 */
class MiEntidad {
    // ...
}

Lamentablemente, según muchas otras respuestas, usar vistas con Doctrine es o muy lento o imposible de hacerlo funcionar.

@javiereguiluz

17 septiembre 2016, 9:22
#2

Gracias @javiereguiluz

De esta forma y definindo todos los campos de la vista, puede realizar una consulta a la vista.

/**
 * @ORM\Entity(readOnly=true)
 * @ORM\Table(name="your_view_table")
 */
class YourEntity {
    private function __construct() {}
}

Cada consulta que realiza esta conformada de

SELECT * FROM bd1.tabla
UNION
SELECT * FROM bd2.tabla
UNION
SELECT * FROM bd3.tabla

La UNION de consultas puede perjudicial el redimiento, pero si creo vistas mas personalizadas, con solo los datos requeridos.

Como solo es lectura, podria realizar procedimientos almacenados, que realicen las consultas segun los parametros requeridos

o habra otra forma de realizar esto.

***Esta es la situacion es la siguiente.***
 
Hoy, existe una aplicación en symfony que utiliza (para consulta) una BD pertenece a otra aplicacion, la cual contiene todos los datos requeridos en una sola BD. Pero sucedio un cambio de sistema. 
 
EL nuevo sistema dispone de varias bd que representas a cada empresa.
 
esta es una descripción: 
 
1. Tengo varias bd cada una representa una empresa.
2. Cada bd tiene mismo estructura/esquema.
3. Hay dos tiempos de usuarios.
4. El primer tipo de usuario, solo puede consultar información de una bd y otros 2 o más bd.
5. Estas base de datos son de solo lectura.

Me podrian orientar.

@dariongg

18 septiembre 2016, 5:12