dflydev / dflydev-doctrine-orm-service-provider

Doctrine ORM Service Provider
MIT License
209 stars 59 forks source link

Separate entity manager factory #61

Open c960657 opened 9 years ago

c960657 commented 9 years ago

I miss the ability to reset the entity manager after an exception has been thrown (see e.g. this StackOverflow question), similar to the Symfony approach in Doctrine\Bundle\DoctrineBundle\Registry::resetManager().

With Pimple 3.x, I can do this:

$factory = $container['orm.ems']->raw('default');
unset($container['orm.em']);
$container['orm.em'] = $factory;

AFAICT this approach does not work with Pimple 1.x (see this issue).

This PR introduces a separate factory method for each entity manager. This allows me to reset the entity manager like this:

$app['orm.em'] = $app['orm.ems.factory'][$app['orm.ems.default']]();
dominikzogg commented 9 years ago

@c960657, i made a manager registry implementation for this orm provider https://github.com/saxulum/saxulum-doctrine-orm-manager-registry-provider

c960657 commented 9 years ago

@dominikzogg Thanks, but AFAICT your resetManager() does not work (subsequent calls to $app['doctrine']->getManager() return null). It seems you also need the factory method proposed here in order to make it work.

c960657 commented 8 years ago

@simensen Any comments on this? :smile:

c960657 commented 8 years ago

Ping? :-)