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
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
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
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