Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] User dos bases de datos en la misma query?

Estas en el tema de User dos bases de datos en la misma query? en el foro de Symfony en Foros del Web. Buenas, es posible usar dos tables de diferentes bases de datos en la misma query?. He intentado hacerlo pero algo hago mal. He configurado el ...
  #1 (permalink)  
Antiguo 01/12/2014, 13:59
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 4 meses
Puntos: 8
User dos bases de datos en la misma query?

Buenas, es posible usar dos tables de diferentes bases de datos en la misma query?.
He intentado hacerlo pero algo hago mal. He configurado el config.yml para usar dos bases de datos

Código:
# Doctrine Configuration
doctrine:
    dbal:
      default_connection:   default
      connections:
          default:
            driver:   "%database_driver%"
            host:     "%database_host%"
            port:     "%database_port%"
            dbname:   "%database_name%"
            user:     "%database_user%"
            password: "%database_password%"
            charset:  UTF8
           external_db:
            driver:   "%database_driver%"
            host:     "%database_host%"
            port:     "%database_port%"
            dbname:   "%second_database%"
            user:     "%database_user%"
            password: "%database_password%"
            charset:  UTF8
y

Código:
    orm:
        auto_generate_proxy_classes: %kernel.debug%
        default_entity_manager:   default
        entity_managers:
            default:
                connection:       default
                mappings:
                    BuddySfBundle : ~
                    FOSUserBundle: ~
            second_db:
                connection:      external_db
                mappings:
                    BuddySfBundle: ~
                    FOSUserBundle: ~
Lo que no tengo claro es en el controller como instanciar el manager, porque lo haga como lo haga no consigo que consulte a dos tablas de distintas bd. La consulta en la entidad la hago así: (esta es la que no hace bien).

Código PHP:
     $em $this->_em;
        
$query "SELECT t1.derid , t1.type ";
        
$query $query."From first_db.gt_art t1 ";
        
$query $query."JOIN  second_db.articulos t2 ON t1.derid = t2.id_art  COLLATE utf8_unicode_ci ";
        
$query $query."JOIN  first_db.categ t3 ON t1.derid = t3.rnid COLLATE utf8_unicode_ci ";
 
        
$query $query."AND t1.status = 'A' ";
        
$query $query."AND t3.status ='A' ";
        
$query $query."AND t2.show_art = 1 ";
        
$query $query."AND t1.type in ($in) "
Gracias de antemano.
__________________
Videotutoriales de Drupal
  #2 (permalink)  
Antiguo 01/12/2014, 18:24
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: User dos bases de datos en la misma query?

Código yml:
Ver original
  1. orm:
  2.         auto_generate_proxy_classes: %kernel.debug%
  3.         default_entity_manager:   default
  4.         entity_managers:
  5.             default:
  6.                 connection:       default
  7.                 mappings:
  8.                     BuddySfBundle : ~
  9.                     FOSUserBundle: ~
  10.             second_db:
  11.                 connection:      external_db
  12.                 mappings:
  13.                     BuddySfBundle: ~
  14.                     FOSUserBundle: ~
Primero que nada en la parte que dice mappings: debe de ir el nombre del o los bundles. Si estos son bundles que sacaste de algún ejemplo es momento de colocar los que son para tu caso.
Cita:
Lo que no tengo claro es en el controller como instanciar el manager, porque lo haga como lo haga no consigo que consulte a dos tablas de distintas bd. La consulta en la entidad la hago así: (esta es la que no hace bien).
Créeme es muy difícil suponer lo que tienes nada mas con lo que publicaste. Así que agrega tu controlador y como están definidas y separadas las entidades.
Si pretendes hacer una consulta nativa: http://docs.doctrine-project.org/en/...ative-sql.html
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 02/12/2014, 01:41
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 4 meses
Puntos: 8
Respuesta: User dos bases de datos en la misma query?

Cita:
Iniciado por hhs Ver Mensaje

Primero que nada en la parte que dice mappings: debe de ir el nombre del o los bundles. Si estos son bundles que sacaste de algún ejemplo es momento de colocar los que son para tu caso.
Buenas, esos no son de ejemplos copiados y pegados, son mis bundles. La parte que me falla es al hacer la query, porque consulta en la misma query dos tablas de dos bases de datos distintas, en el controller solo hago esto:

$mg = $this->getDoctrine()->getManager('second_db');


Y luego en la entidad tengo eso que pegué antes.

NOTA:first_db es la bd por default.

Código PHP:
Ver original
  1. $em = $this->_em;
  2.         $query = "SELECT t1.derid , t1.type ";
  3.         $query = $query."From first_db.gt_art t1 ";
  4.         $query = $query."JOIN  second_db.articulos t2 ON t1.derid = t2.id_art  COLLATE utf8_unicode_ci ";
  5.         $query = $query."JOIN  first_db.categ t3 ON t1.derid = t3.rnid COLLATE utf8_unicode_ci ";
  6.  
  7.         $query = $query."AND t1.status = 'A' ";
  8.         $query = $query."AND t3.status ='A' ";
  9.         $query = $query."AND t2.show_art = 1 ";
  10.         $query = $query."AND t1.type in ($in) ";

Gracias
__________________
Videotutoriales de Drupal
  #4 (permalink)  
Antiguo 02/12/2014, 04:36
Avatar de Dundee  
Fecha de Ingreso: junio-2002
Ubicación: El Médano
Mensajes: 1.310
Antigüedad: 22 años, 4 meses
Puntos: 8
Respuesta: User dos bases de datos en la misma query?

Solucionado, el único problema era que la query devolvía vacío porque los condicionales impedían que se obtuvieran resultado, asunto resuelto :).
__________________
Videotutoriales de Drupal

Etiquetas: bases
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:46.