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

Cómo configurar en Symfony el esquema PostgreSQL donde se crea la base de datos

10 de junio de 2015

Al momento que corro el comando para que se cree mis tablas en mi base de datos Postgres lo hace en el esquema public, ¿dónde puedo configurar para que se me cree las tablas en un esquema que ya tengo creado?

Gracias de antemano.


Respuestas

#1

Puedes configurar el esquema en cada entidad mediante la anotación @ORM\Table:

use Doctrine\ORM\Mapping as ORM;
 
/**
 * @ORM\Table(schema="nombre_esquema")
 */
class NombreEntidad 
{
    // ...
}

@javiereguiluz

10 junio 2015, 15:25
#2

Gracias de nuevo @javiereguiluz, lo probaré.

@piocarluis

10 junio 2015, 15:54
#3

@javiereguiluz el problema que tengo es el siguiente, yo tengo primero creada la base de datos con sus tablas respectivas, luego ejecuto el comando php app/console doctrine:mapping:import --force nombreBundle xml para mapear mis tablas.

Luego ejecuto el comando php app/console doctrine:mapping:convert annotation ./src para generar las entidades y me las genera correctamente, con todo lo que tengo en mi BD ya sea FK, secuencias, ahí no hay ni un problema.

Luego ejecuto php app/console doctrine:generate:entities nombreBundle para obtener los getters y setters. Pero al momento de ejecutar php app/console doctrine:schema:update --force las tablas que ya las tenía creadas en mi esquema se me crean en el esquema public, pero yo quiero trabajar en mi esquema.

Agregué la línea que me dejaste en la respuesta que me diste antes de actualizar mi esquema pero me sigue generando las tablas en el esquema public.

@piocarluis

10 junio 2015, 18:47
#4

He buscado en el repositorio de Symfony y en el del DoctrineBundle y parece que la librería de Doctrine no soporta los esquemas de manera totalmente integrada. En esta respuesta de StackOverflow proponen como solución de emergencia que incluyas explícitamente en tus entidades el nombre del esquema de la siguiente manera (es parecido a lo que te he dicho antes, pero diferente):

@ORM\Table(name="nombre_esquema.nombre_tabla")

@javiereguiluz

10 junio 2015, 22:21
#5

@javiereguiluz tambien probé eso y no se solucionó. Otros decían que pruebe @ORM\Table(name="nombre_esquema"."nombre_tabla") y tampoco funcionó. Encontré esta página que tienen el mismo problema que yo https://groups.google.com/forum/#!topic/symfony-ven/wX4UImVTbio

@piocarluis

10 junio 2015, 22:29