Hola, en la aplicación que estamos realizando en Symfony2 los clientes hacen el login contra un servidor LDAP y en función de la organización a la que pertenezcan se deben conectar a una base de datos específica para su organización. Todas las Bases de datos tendrán la misma estructura, es decir, tan solo es necesaria la utilización de un Entity Manager.
El caso es que no se como hacer para que según la información que reciba del servidor LDAP la aplicación se conecte a la base de datos que corresponde.
He estado investigando sobre el tema un poco y lo único interesante que he encontrado es este tema de StackOverflow:
http://stackoverflow.com/questions/6409167/symfony-2-multiple-and-dynamic-database-connection
No se si es la mejor manera de conseguir esto y me gustaría saber que opináis vosotros. Espero que me podáis ayudar.
Un saludo a todos.
Respuestas
Hola, tengo un problema similar al hacer el login bajo el ldap y este retorname ciertos valores proceso una conexion dinamica por ejemplo.
$configs = new \Doctrine\DBAL\Configuration(); $connectionParams = array( 'dbname' => 'dbname', 'user' => $user, 'password' => $password, 'host' => 'host', 'driver' => 'oci8', ); $em = DriverManager::getConnection($connectionParams, $configs);
Con esta conexión puedo ejecutar consultas sql, pero consultas dql no!, por que lo supongo que es necesario crear un nuevo entity manager con los nuevos parámetros de conexión, he estado intentando algo como esto:
$cache = new \Doctrine\Common\Cache\ArrayCache; $config= new \Doctrine\ORM\Configuration; $config->setMetadataCacheImpl($cache); $driverImpl = $config->newDefaultAnnotationDriver($ruta); $config->setMetadataDriverImpl($driverImpl); $config->setQueryCacheImpl($cache); $dir = $this->container->getParameter('kernel.cache_dir').""."/doctrine/orm/Proxies"; $config->setProxyDir($dir); $config->setProxyNamespace('Proxies'); $config->setAutoGenerateProxyClasses(true); $em = EntityManager::create($em, $config, $em->getEventManager())
Pero obtengo el error de "Unknown Entity namespace alias" al intentar ejecutar una consulta dql, supongo que se me escapa algo, que camino tomaste tu?, como trabajaste con la nueva conexión y el entity manager? si pudieras comentarlo te lo agradecería.
Saludos a Todos!
@kmiloxvii
MI caso no es el mismo. Yo hago el login contra el LDAP para obtener toda la información del usuario (datos usuario, empresa, Roles, categorías...) de la jerarquía del mismo. Pero una vez autenticado el usuario todas las consultas se hacen a una base de datos relacional mysql.
Está claro que no es el mismo caso que el tuyo. Hasta donde he podido entender ¿estás intentando hacer consultas DQL contra el LDAP?
No se si te servirá de ayuda, pero para gestionar el login contra el LDAP he utilizado el bundle:
imag/ldap-bundle
Tienes toda la información en el siguiente enlace
@javiermadueno