davidkmenta / repo-service-bundle
此包已被废弃,不再维护。未建议替代包。
将 Doctrine 仓库声明为 Symfony 服务
dev-master
2016-10-03 19:25 UTC
Requires
- php: >=5.6
- doctrine/orm: ^2.5
- symfony/symfony: 3.*
Requires (Dev)
- phpunit/phpunit: ^5.5
This package is auto-updated.
Last update: 2023-12-17 08:21:47 UTC
README
仅限实验使用!
RepoServiceBundle 提供了将 Doctrine 仓库声明为 Symfony 服务的能力。
需求
- Symfony >= 3
- Doctrine >= 2.5
- PHP >= 5.6
安装
使用 composer 需求此包
composer require davidkmenta/repo-service-bundle "dev-master"
在内核中启用此包
<?php // app/AppKernel.php public function registerBundles() { $bundles = [ // ... new DavidKmenta\RepoServiceBundle\RepoServiceBundle(), // ... ]; }
文档
- 注意:此包覆盖了
doctrine.orm.entity_manager.class
选项并设置了一个自己的实体管理器。 - 首先,您需要创建或更新您的仓库类。仓库类必须扩展
DavidKmenta\RepoServiceBundle\Repository\EntityRepository
类。 - 现在,您必须实现一个
getMappedEntityName
方法,该方法告诉实体管理器此仓库管理的是哪个实体。最佳实践是返回一个完全限定的类名
<?php namespace AcmeBundle\Repository; use AcmeBundle\Entity\CustomEntity; use DavidKmenta\RepoServiceBundle\Repository\EntityRepository; use Psr\Log\LoggerInterface; class CustomRepository extends EntityRepository { public function __construct(LoggerInterface $logger) { // ... } public function getMappedEntityName() { return CustomEntity::class; } }
- 最后一步是将仓库定义为服务。这与其他定义一样简单
acme.repository.custom: class: AcmeBundle\Repository\CustomRepository arguments: ["@logger"] tags: - { name: doctrine.repository }
就是这样!是的,诀窍在于标签 doctrine.repository
:-) ,并且日志记录器像您预期的那样被注入。
待办事项和已知问题
- 不要使用
getMappedEntityName
方法,通过类注解声明实体名称。 - 不支持自定义实体管理器。
免责声明
使用此包风险自担。
许可证
MIT
贡献
任何贡献都受欢迎 :-)