query - ¿Cómo usar silex con Doctrine orm EntityManager?
query builder symfony (2)
Soy nuevo en el marco de Silex. Y me gustaría hacer una conexión simple de SQL DB usando el administrador de entidades de doctrina. Por favor dé algunos ejemplos simples.
Gracias por adelantado,
SK
Aquí hay un ejemplo de trabajo de toda la siguiente configuración a continuación. También hay un tutorial de YouTube que explica esa configuración. O si solo quieres algo que funcione ahora mismo prueba: this .
De lo contrario, lo siguiente es un intento de explicar una forma de configurar y "usar silex con EntityManager de Doctrine orm" :
Instalar
Añadir esta línea en composer.json:
"dflydev/doctrine-orm-service-provider": "1.0.6"
Desde la línea de comandos ejecutar:
~$ composer update dflydev/doctrine-orm-service-provider
Registro
Registrar el proveedor de servicios:
$app->register(new Silex/Provider/DoctrineServiceProvider());
$app->register(new Dflydev/Silex/Provider/DoctrineOrm/DoctrineOrmServiceProvider());
Configurar
Configure su base de datos y asignaciones de entidades. Tus caminos pueden ser diferentes . Puede encontrar una explicación mejor y más detallada en el archivo README de Doctrine ORM Service Provider :
$app[''db.options''] = array(
''driver'' => ''pdo_mysql'',
''charset'' => ''utf8'',
''host'' => ''127.0.0.1'',
''dbname'' => '''',
''user'' => '''',
''password'' => '''',
);
$app[''orm.proxies_dir''] = __DIR__.''/../cache/doctrine/proxies'';
$app[''orm.default_cache''] = ''array'';
$app[''orm.em.options''] = array(
''mappings'' => array(
array(
''type'' => ''annotation'',
''path'' => __DIR__.''/../../src'',
''namespace'' => ''My//Namespace//To//Entity'',
),
),
);
Es probable que desees configurar cli-config.php
para obtener más información, lee la Documentación de configuración de Doctrine :
<?php
// http://docs.doctrine-project.org/en/latest/reference/configuration.html
require __DIR__.''/vendor/autoload.php'';
require __DIR__.''/path/to/app/config.php'';
$newDefaultAnnotationDrivers = array(
__DIR__."/src/MyNamespace",
);
$config = new /Doctrine/ORM/Configuration();
$config->setMetadataCacheImpl(new /Doctrine/Common/Cache/ApcCache);
$driverImpl = $config->newDefaultAnnotationDriver($newDefaultAnnotationDrivers);
$config->setMetadataDriverImpl($driverImpl);
$config->setProxyDir($app[''orm.proxies_dir'']);
$config->setProxyNamespace(''Proxies'');
$em = /Doctrine/ORM/EntityManager::create($app[''db.options''], $config);
$helpers = new Symfony/Component/Console/Helper/HelperSet(array(
''db'' => new /Doctrine/DBAL/Tools/Console/Helper/ConnectionHelper($em->getConnection()),
''em'' => new /Doctrine/ORM/Tools/Console/Helper/EntityManagerHelper($em),
));
Dar un giro
En este punto, debería poder volcar algún esquema de la línea de comandos suponiendo que tiene entities annotated en la ruta $newDefaultAnnotationDrivers
:
~$ php vendor/bin/doctrine orm:schema-tool:update --dump-sql
Con la configuración anterior en su lugar, también debería poder usar $app[''orm.em'']
desde un método de controlador:
$app->match(''/form'', function (Request $request) use ($app) {
$em = $app[''orm.em''];
$entity = new /My/Namespace/To/Entity/Form();
$form = $app[''form.factory'']->create(new /My/Namespace/To/Form/FormType(), $entity);
$form->handleRequest($request);
if ($form->isValid()) {
$em->persist($entity);
$em->flush();
}
return new Response($app[''twig'']->render(''form.html.twig'', array(
''form'' => $form->createView(),
)));
})->bind(''form'');
No hay un proveedor oficial de servicios de Doctrine ORM para Silex, solo el DBAL, pero hay varios proveedores de servicios de terceros que puede probar.
Comencé a usar dflydev-doctrine-orm-service-provider que tiene más inicios en github y se ve bien.