arturdoruch / doctrine-entity-manager-bundle
帮助创建和访问自己的Doctrine实体管理器类。
1.0.4
2021-04-06 15:58 UTC
Requires
- doctrine/doctrine-bundle: ^1.10|^2.0
- doctrine/orm: ^2.7
README
Symfony Bundle,帮助创建和访问自己的Doctrine实体管理器类(在实体上执行操作)。
安装
composer require arturdoruch/doctrine-entity-manager-bundle
在内核类中注册bundle。
$bundles = [ new ArturDoruch\DoctrineEntityManagerBundle\ArturDoruchDoctrineEntityManagerBundle(), ];
使用
创建实体管理器
为了创建Doctrine实体管理器类,需要扩展ArturDoruch\DoctrineEntityManagerBundle\AbstractEntityManager
抽象类,并实现所需的getRepository()
方法,该方法返回管理实体的仓库类。
示例
<?php namespace AppBundle\Doctrine; use AppBundle\Entity\Foo; use ArturDoruch\DoctrineEntityManagerBundle\AbstractEntityManager; class FooManager extends AbstractEntityManager { public function getRepository() { return $this->doGetRepository(Foo::class); } // Custom entity manager methods. /*public function create(): Foo { $foo = new Foo(); return $foo; } public function save(Foo $foo) { $this->persist($foo); } public function remove(Foo $foo) { $this->doRemove($foo); }*/ }
将实体管理器注册为服务
要将实体管理器注册为服务,请将arturdoruch.doctrine_entity_manager
标签添加到服务配置中。
doctrine.foo_manager: class: AppBundle\Doctrine\FooManager tags: ['arturdoruch.doctrine_entity_manager']
访问实体管理器
所有管理器都注册在ArturDoruch\DoctrineEntityManagerBundle\EntityManagerRegistry
类中。要获取特定的实体管理器,请将类名传递给get()
方法。
在控制器中
<?php $emr = $this->get('arturdoruch.doctrine_entity_manager_registry'); $fooManager = $emr->get(FooManager::class); $barManager = $emr->get(BarManager::class);
在实体管理器中
<?php namespace AppBundle\Doctrine; use AppBundle\Entity\Foo; use AppBundle\Doctrine\BarManager; use ArturDoruch\DoctrineEntityManagerBundle\AbstractEntityManager; class FooManager extends AbstractEntityManager { /** * @var BarManager */ private $barManager; public function initialize() { $this->barManager = $this->getManager(BarManager::class); } }
类API
ArturDoruch\DoctrineEntityManagerBundle\AbstractEntityManager
用于在实体管理器类中使用的受保护方法
- getEntityManagerName
- initialize
- getManager
- persist
- doRemove