小编Ost*_*tin的帖子

如何在Symfony中覆盖捆绑的Doctrine存储库

我有一个独立的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)

php doctrine symfony doctrine-orm

4
推荐指数
1
解决办法
2620
查看次数

标签 统计

doctrine ×1

doctrine-orm ×1

php ×1

symfony ×1