Doctrine CLI varios EntityManager

Merkury

Buenas gente.

A ver vengo con una historia que me esta dando bastante por saco.

Tengo en un proyecto integrado Doctrine (no es Symfony2 es una libreria de codigo propia) con varios de los bundles y funcionalidades.

La historia es que al configurarme las herramientas de CLI no consigo configurarlo para pasar mas de un entityManager y habilitar la posiblidad de trabajar con diferentes bases de datos (cosa que necesito, si o si).

Alguien que haya hecho algo parecido y tenga alguna idea de como seguir?

Gracias.

radykal

No pases el entitymanager, pasa el objecto de doctrine entero y de ahí sacas los entitymanager que necesites en cada caso. Danos algún detalle más de como inyectas las dependencias y como configuras las diferentes conexiones a las bases de datos

1 respuesta
Merkury

#2 Para poder configurar Doctrine por CLI tienes que hacer un config, instanciando el EntityManager.

No puedes pasar el objeto, y luego pasar el entity manager.

Las conexiones a DB se configuran en el CLI.

No puedo enseñar codigo :(

1 respuesta
radykal

#3 Ni un poquito? vacía métodos y cambiales los nombres, en la config deja dos conexiones fake a la bbdd o simula en pseucodogido un poco la estructura.

sino échale un ojo a:
https://github.com/doctrine/DoctrineORMModule/issues/97
https://github.com/SwissEngine/Doctrine-Module-Extension
http://stackoverflow.com/questions/36167293/how-do-i-set-up-doctrine-2-with-multiple-entity-managers-in-one-project-withou

Merkury

A ver pego el cli-config para que veais como lo tengo configurado por ahora, que es basicamente la configuracion con una conexion.

<?php
use Doctrine\ORM\Tools\Console\ConsoleRunner;
use Something\Was\Here\AndIsNot;
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;

require_once 'bootstrap.php';

$databaseConnectionParameters = array(
    'user' => 'bar'
    'password' => 'foo'
    'driver' => 'pdo_mysql,
    'dbname' =>'db',
    'host' => 'my_host'
);

// not fully needed but adding to get working in line with default template
//$paths = array(__DIR__ . "/../Model/Entities1", __DIR__ . "/../Model/Entities2", __DIR__ . "/../Model/Entities3");
$paths = array(__DIR__ . "/../Model");
$isDevMode = false;

// setup the entity config
$config = Setup::createAnnotationMetadataConfiguration($paths, false, null, null, false);

// replace with mechanism to retrieve EntityManager in your app
$entityManager = EntityManager::create($databaseConnectionParameters, $config);

// send back the console runner as part of the default setup for running
// on command line
return ConsoleRunner::createHelperSet($entityManager);

Usuarios habituales

  • Merkury
  • radykal