Создайте пакет для использования вторичного менеджера сущностей с другим соединением - PullRequest
0 голосов
/ 22 апреля 2020

Я создаю пакет, который предназначен для извлечения данных из вторичной базы данных. Я не уверен, какие другие конфигурации я могу добавить или изменить, чтобы сделать эту работу. Я также попытался передать соединение напрямую в хранилище. В идеале инструмент, использующий пакет, мог бы просто передать хранилище в качестве параметров и легко использовать его.

Приведенная ошибка:

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
{}

1 Ответ

0 голосов
/ 23 апреля 2020

Так я решил проблему, используя отображение в записи 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...