trabajando con 2 bases de datos o dos schemas

970 views
Skip to first unread message

pizzakiller

unread,
Jun 14, 2007, 9:51:16 PM6/14/07
to symfo...@googlegroups.com
amigos colisteros

tengo entendido q se puede trabajar con dos bases de datos en un mismo
proyecto..

pero tengo unas dudas que agradeceria me las aclaren.

0. tengo que crear dos archivos schema .yml "a pie" es decir crearlos yo o
symfony me los crea?
si es asi tendria que cambiar algo en el archivo propel.ini?


1. en el archivo databases.yml
la estructura seria:
(estoy trabajando con postgres)
db1:
propel:
dns: pgsql:usuario:clave@localhost/db1

db2:
propel:
dns: pgsql:usuario:clave@localhost/deb2


--
Juliocésar Prieto Lem -
Programmers never dies.. Only GOSUB without RETURN
user linux 218820. running linux 2.6.18-3-686
Fingerprint = 04CC 8521 D3BF EB25 7F95 7E77 BB0A 5235 8C1B EF4B

Javier Eguiluz

unread,
Jun 15, 2007, 2:58:37 AM6/15/07
to symfo...@googlegroups.com
Hola Juliocésar,

Existe un snippet que explica cómo conectar con 2 bases de datos diferentes mediante Propel: http://www.symfony-project.com/snippets/snippet/86

On 6/15/07, pizzakiller <pizza...@gmail.com> wrote:

amigos colisteros

     tengo entendido q se puede trabajar con dos bases de datos en un mismo
proyecto..

pero tengo unas dudas que agradeceria me las aclaren.

0. tengo que crear dos archivos schema .yml "a pie" es decir crearlos yo o
symfony me los crea?
si es asi tendria que cambiar algo en el archivo propel.ini?

Tienes que crear los 2 .yml o los 2 .xml a mano.

1.  en el archivo databases.yml
la estructura seria:
(estoy trabajando con postgres)
db1:
    propel:
       dns:  pgsql:usuario:clave@localhost/db1

db2:
   propel:
       dns:  pgsql:usuario:clave@localhost /deb2

El databases.yml no es exactamente igual que el que has puesto. Además, ten mucho cuidado que no es "dns", sino "dsn" (que viene de "datasource name").


Un saludo,
Javier Eguiluz
www.symfony.es

Boris Duin

unread,
Jun 15, 2007, 10:38:42 AM6/15/07
to symfo...@googlegroups.com
Pizzakiller, tienes que tener cuidado con algunas cosas:
  • En el database.yml tienes que indicar las bases de datos de esta manera.
all:      //  All para todos los enviroments, si quieres para un enviroment especifico debes indicarlo
  propel:
    class:          sfPropelDatabase
    param:
      dsn:            pgsql://usuario:pass...@mybdd.midominio.com/BDD1
  myotrabdd
    class:          sfPropelDatabase
    param:
      dsn:            pgsql://usuario:pass...@mybdd2.midominio.com/BDD2

En este ejemplo tienes la conexión a la Bdd por defecto (propel) que se conecta a un servidor de BdD de postgres llamado mybdd.midominio.com, especificamente a la BdD BDD1.
La segunda conexión se llama myotrabdd, tambien se conecta a un servidor postgres, en este caso a uno llamado mybdd2.midominio.com, a la Bdd BDD2.

Ahora, cuando crees el shema.yml tiene que poner mucha atención a lo siguiente:
  • En el primer nivel del indentado YAML  del archivo se define la conexión que se utilizará para acceder a las tablas que se definan en el segundo nivel de indentación. En el primer nivel por defecto se pone propel, haciendo referencia  la conexión  por defecto En el siguiente ejemplo observa como se define una tabla para cada BdD.
propel:
  tabla1:
    campo1: INTEGER
myotrabdd:
  tabla2:
    campo2: INTEGER.

Ahora, cuando generes el modelo, las clases de cada tabla utilizarán la conexión que les corresponda, y la puedes usar sin problemas en un action, por ejemplo:

$this->lista1 = tabla1Peer::doSelect(New Cirteria);
$this->lista2 = tabla2Peer::doSelect(New Cirteria);

y utilizar $lista1 y $lista2 en la vista sin ningun inconveniente.
--
Boris Duin
Celular: 0416-8136373

adrian gattorno gil

unread,
Aug 19, 2013, 11:49:23 AM8/19/13
to symfo...@googlegroups.com
se puede hacer esto mismo con symfony2 y doctrine o propel??


El viernes, 15 de junio de 2007 10:38:42 UTC-4, Boris Duin escribió:
Pizzakiller, tienes que tener cuidado con algunas cosas:
  • En el database.yml tienes que indicar las bases de datos de esta manera.
all:      //  All para todos los enviroments, si quieres para un enviroment especifico debes indicarlo
  propel:
    class:          sfPropelDatabase
    param:
      dsn:            pgsql://usuario:password@mybdd.midominio.com/BDD1
  myotrabdd
    class:          sfPropelDatabase
    param:
      dsn:            pgsql://usuario:password@mybdd2.midominio.com/BDD2

JUCA

unread,
Aug 23, 2013, 5:30:17 PM8/23/13
to symfo...@googlegroups.com
En Symfony2 se utiliza doctrine no propel.

Saludos

El Tello

unread,
Aug 23, 2013, 5:31:44 PM8/23/13
to symfo...@googlegroups.com

Puedes usar el que desees y los dos permiten trabajar con varias bases de datos.

--
--
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Google Groups.
Para publicar en este grupo, envía un email a symfo...@googlegroups.com
Para darte de baja, envía un email a symfony-es+...@googlegroups.com
El resto de opciones puedes encontrarlas en http://groups.google.com/group/symfony-es?hl=es
 
---
Has recibido este mensaje porque estás suscrito al grupo "symfony-es" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a symfony-es+...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.

Miguel Ángel Martín

unread,
Aug 25, 2013, 11:29:44 AM8/25/13
to symfo...@googlegroups.com
También está la opción de que cada entorno use una base de datos distinta. Bastaría con configurar varios entornos.


Marcelo Prizmic

unread,
Aug 26, 2013, 9:04:56 AM8/26/13
to symfo...@googlegroups.com
podrían dar algùn detalle màs?
estoy pensando en un mòdulo de migraciòn entre motores y hace falta abrir 2 bases distintas.
Tienen algùn pequeño ejemplo de còdigo de còmo sería la configuraciòn o la prograciòn?
muchas gracias
marcelo
Reply all
Reply to author
Forward
0 new messages