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

Problema al generar entidades en Doctrine teniendo varias bases de datos

28 de julio de 2015

Muy buenas, tengo Silex con doctrine ORM. He montado dos bases de datos y me falta crear las entidades. Las he intentado crear utilizando un archivo YAML y generando las entidades con un comando.

Este es mi archivo YML actualmente:

Entity\User:
    type: entity
    table: user
    id:
        id_user:
            type: integer
            generator:  
                strategy: AUTO 
    fields:
        username:
            type: string
            scale: 100    
        email:
            type: text
        password:
            type: string
            scale: 200
        roles:
            type: string
            scale: 100

Y esta es la configuracion que tengo en el app.php donde configuro algunos parametros de Doctrine:

//...
$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
    'dbs.options'    => array(
        'local' => array( //base de datos local
                'driver'    => 'pdo_mysql',
                'host'      => 'localhost',
                'dbname'    => 'silex',
                'user'      => 'root',
                'password'  => '',
                'charset'   => 'utf8',
                'driverOptions' => array(1002 => 'SET NAMES utf8'),
        ),
        'remote' => array( //base de datos remota
               'driver'    => 'pdo_mysql',
               'host'      => '',
               'dbname'    => '',
               'user'      => '',
               'password'  => '',
               'charset'   => 'utf8',
               'driverOptions' => array(1002 => 'SET NAMES utf8'),
        ),
    ),
));
 
$app->register(new Dflydev\Provider\DoctrineOrm\DoctrineOrmServiceProvider(), array(
    "orm.ems.default" => "local",
    "orm.ems.options" => array(
        "local" => array(
            "connection" => "local",
            "mappings" => array(
                array(
                    "type"      => "yml",
                    "namespace" => "Entity",
                    "path"      => realpath(__DIR__."/../config/doctrine"),
                ),
            ),
        ),
 
        "remote" => array(
            "connection" => "remote",
            "mappings" => array(
                array(
                    "type"      => "yml",
                    "namespace" => "Entity",
                    "path"      => realpath(__DIR__."/../config/doctrine"),
                ),
            ),
        ),
 
    ),
));
//...

Y este es el comando que uso para generar las entidades, en la ventana CMD de windows.

php console orm:generate-entities src/ --generate-annotations=1

Espero que podáis echarme un cable, estoy mirando en google y no encuentro solución. Si tengo una base de datos si me sale bien pero teniendo dos no hay manera, no se qué hago mal.

Un saludo y gracias!!!


Respuestas

#1

Nunca he usado el ORM de Doctrine en Silex, así que no se cómo funciona el comando orm:generate-entities. Pero si funciona igual que en Symfony, creo que el error está en la opción mappings de las dos bases de datos. Según tu configuración, las dos bases de datos manejan todas las entidades de la aplicación, ya que tienen el mismo namespace y el mismo path.

Posiblemente el error se solucione si decides qué entidades pertenecen a una base de datos y cuáles pertenecen a la otra. De nuevo esto es muy fácil de configurar con Symfony, pero no se si en Silex será igual.

@javiereguiluz

28 julio 2015, 14:58
#2

Gracias @javiereguiluz, no obstante, que va, no funciona, he probado lo que me has dicho y nada...pero gracias de todas formas!!

@daviz_xtr

28 julio 2015, 16:16