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
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
Gracias @javiereguiluz, no obstante, que va, no funciona, he probado lo que me has dicho y nada...pero gracias de todas formas!!
@daviz_xtr