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

Conexion a base de datos

20 de noviembre de 2015

Estoy realizando un proyecto con Symfony2 y estoy trabajando con bases de datos diferentes. El problema esta, que Doctrine solo tiene el "Driver" de una sola (Mysql) y de la otra base de datos no me da la opcion en el "Driver". Entonces queria saber como puedo conectarme a una base de datos, cuyo "Driver" no aparece en la configuracion.

Hay algun metodo alternativo para conectar a una base de datos, con o sin doctrine?


Respuestas

#1

Hola,

Puedes configurar Doctrine para que use multiple bases de datos, se llaman conexiones, de esta manera lo haces:

app/config/config.yml

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
            legacy:
                driver:   "%database_legacy_driver%"
                host:     "%database_legacy_host%"
                port:     "%database_legacy_port%"
                dbname:   "%database_legacy_name%"
                user:     "%database_legacy_user%"
                password: "%database_legacy_password%"
                charset:  UTF8

Como puedes ver tengo dos connections default y legacy, cada connection tiene sus propios datos como driver, host, port, etc.

En el ejemplo que te muestro los está tomando de los parametros, puedes configurar tu archivo app/config/parameters.yml.dist con estos nuevos parametros y asi cada vez que hagas composer update o composer install se van a pedir esos nuevos datos (si no están, claro), a continuacion de muestro un ejemplo:

app/config/parameters.yml.dist

# This file is a "template" of what your parameters.yml file should look like
parameters:
    database_driver:    pdo_mysql
    database_host:      127.0.0.1
    database_port:      ~
    database_name:      symfony
    database_user:      root
    database_password:  ~
    # You should uncomment this if you want use pdo_sqlite
    # database_path: "%kernel.root_dir%/data.db3"

    database_legacy_driver:   pdo_mysql
    database_legacy_host:     127.0.0.1
    database_legacy_port:     ~
    database_legacy_name:     symfony
    database_legacy_user:     root
    database_legacy_password: ~
 
    mailer_transport:  smtp
    mailer_host:       127.0.0.1
    mailer_user:       ~
    mailer_password:   ~
 
    locale:            en
 
    # A secret key that's used to generate certain security-related tokens
    secret:            ThisTokenIsNotSoSecretChangeIt

Aca tienes la doc oficial

@ramiroanacona

20 noviembre 2015, 18:28
#2

Gracias, pero eso solo responde a una parte de mi pregunta. Y cuando symfony no tiene el pdo para "database_driver". Dando solo un ejemplo muy basico. Si me quiero conectar a una base de datos Access o Sybase, o Firebird. Aparte de mi base de datos MySql. Symfony no me provee el driver para conecatar a las bases de datos mencionadas anteriormente. Como puedo realizar la conexion?

@Enzo_B16

20 noviembre 2015, 20:32
#3

Hola, En mi aplicación me contecto a MySql y a SQLServer de la forma que indica @ramiroanacona. El driver de SQLServer me lo descargué y seguí las intrucciones que indicaban aquí

Para Firebird, tienes aquí la información. Espero que te sirva, aunque igual ya encontraste la respuesta ya que tu pregunta es de hace unos meses.

@abmelgarejo

25 febrero 2016, 12:23