我有一个独立的Symfony软件包(与Composer一起安装),其中包含实体和存储库,可在连接同一数据库的应用程序之间共享。
使用配置将实体附加到每个应用程序(显示为yml):
doctrine:
orm:
mappings:
acme:
type: annotation
dir: %kernel.root_dir%/../vendor/acme/entities/src/Entities
prefix: Acme\Entities
alias: Acme
Run Code Online (Sandbox Code Playgroud)
嗯,这是在应用程序中包含外部实体的最简单方法,但是看起来有点难看。
每当我从实体管理器获取存储库时:
$entityManager->getRepository('Acme:User');
Run Code Online (Sandbox Code Playgroud)
我得到了预配置的存储库(在实体配置中)或default Doctrine\ORM\EntityRepository
。
现在,我想覆盖单个实体的捆绑(或默认)存储库类。是否有机会通过一些配置/扩展名等来完成?
我认为,最好看的方式是这样的:
doctrine:
orm:
....:
Acme\Entities\User:
repositoryClass: My\Super\Repository
Run Code Online (Sandbox Code Playgroud)
或带有标签:
my.super.repository:
class: My\Super\Repository
tags:
- { name: doctrine.custom.repository, entity: Acme\Entities\User }
Run Code Online (Sandbox Code Playgroud)