首页 > 解决方案 > 创建捆绑包以使用具有不同连接的辅助实体管理器

问题描述

我正在创建一个包,旨在从辅助数据库中提取数据。我不确定我可以添加或更改哪些其他配置来完成这项工作。我也尝试将连接直接传递到存储库中。理想情况下,使用捆绑包的工具能够将存储库作为参数传递并轻松使用它。

给出的错误:

The class 'SRC\SRC\DataBundle\Entity\Course' was not found in the chain configured namespaces

doctrine.yml导入捆绑包的工具中的文件。SECONDARY_DATA 是我试图将我的实体管理器连接到的那个

doctrine:
    dbal:
        default_connection: default
        connections:
            default:
                # configure these for your database server
                driver: 'pdo_mysql'
                server_version: '5.6'
                charset: utf8mb4
                default_table_options:
                    charset: utf8mb4
                    collate: utf8mb4_unicode_ci
                url: '%env(DATABASE_URL)%'
            SECONDARY_DATA_CONN:
                # configure these for your database server
                driver: 'pdo_mysql'
                server_version: '5.6'
                charset: utf8mb4
                default_table_options:
                    charset: utf8mb4
                    collate: utf8mb4_unicode_ci
                url: '%env(SECONDARY_DATABASE_URL)%'

    orm:
        auto_generate_proxy_classes: '%kernel.debug%'
        default_entity_manager: default
        entity_managers:
            default:
                naming_strategy: doctrine.orm.naming_strategy.underscore
                auto_mapping: true
                connection: default
                mappings:
                    App:
                        is_bundle: false
                        type: annotation
                        dir: '%kernel.project_dir%/src/Entity'
                        prefix: 'App\Entity'
                        alias: App
            SECONDARY_DATA:
                naming_strategy: doctrine.orm.naming_strategy.underscore
                connection: SECONDARY_DATA_CONN
                auto_mapping: false

services.yml主工具文件。出于隐私原因,我更改了一些路径和名称。

  SRC\SRC\DataBundle\Entity\Repository\CourseRepository:
        alias: 'src.src.data_bundle.course.repository'

services.yml捆绑包文件

services:
    src.src.data_bundle.course.repository:
        class: SRC\SRC\DataBundle\Entity\Repository\CourseRepository
        factory: ['@doctrine.orm.SECONDARY_DATA_entity_manager', getRepository] # where i believe the entity manager will know to use the correct database
        public: false
        arguments:
            - 'SRC\SRC\DataBundle\Entity\Course'

存储库文件

namespace SRC\SRC\DataBundle\Entity\Repository;

use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;

class CourseRepository extends ServiceEntityRepository
{}

标签: symfonydoctrine-ormdoctrine

解决方案


这就是我最终使用 ORM 条目上的映射解决它的方式

SECONDARY_data:
                naming_strategy: doctrine.orm.naming_strategy.underscore
                connection: SECONDRARY_data_CONN
                auto_mapping: false
                mappings:
                    DataBundle:
                        type: annotation
                        prefix: UCI\AWT\DataBundle\Entity
                        dir: "%kernel.project_dir%/.../.../data-bundle/Entity"
                        is_bundle: false


推荐阅读