1

私は以下の教義構成を持っています、

教義構成

doctrine:
    dbal:
        default_connection: default    
        connections:

            default:
                driver:   %database_driver%
                host:     %database_host%
                port:     %database_port%
                dbname:   %database_name%
                user:     %database_user%
                password: %database_password%
                charset:  UTF8
                mapping_types:
                   enum:    string

            em1:                    
                driver:   %database_driver%
                host:     %database_host%
                port:     %database_port%
                dbname:   em1
                user:     %database_user%
                password: %database_password%
                charset:  UTF8

            em2:                    
                driver:   %database_driver%
                host:     %database_host%
                port:     %database_port%
                dbname:   em2
                user:     %database_user%
                password: %database_password%
                charset:  UTF8
        types:
            json: Sonata\Doctrine\Types\JsonType
orm:
    auto_generate_proxy_classes: %kernel.debug%
    default_entity_manager: default

    entity_managers:
        default:
            connection: default
            mappings:
              MyDemoBundle : ~
              MyMessagingBundle : ~
        em1:
            connection: em1
            mappings:
              MyOtherBundle : ~
        porting:
            connection: em2
            mappings:
              SonataNotificationBundle: ~
              ApplicationSonataNotificationBundle: ~

MyDemoBundle にすべてのエンティティがあります

MyDemoBundle のエンティティを使用して、MyMessagingBundle は em1 データベースからテーブルを読み取り、電子メールを送信するメッセージを作成し、それらのメッセージをデータベース em2 の sonata のテーブル 'notifications__message' に保存する Sonata バックエンド サービスに渡します。しかし、私はエラーが発生しています

クラス 'Application\Sonata\NotificationBundle\Entity\Message' がチェーン構成された名前空間 My\DemoBundle\Entity に見つかりませんでした

em1 エンティティ マネージャの下にある MyMessagingBundle から em2 エンティティ マネージャの下にある SonataNotificationBundle のサービスを呼び出すと、ソナタが em2 の下のエンティティにアクセスできなくなります。サービスが呼び出された場所からエンティティを見つけようとします。

最初は、em1 の下ですべてが正常に機能していたバンドルの下にありました。それらをem2エンティティマネージャーに移動するだけです。

SonataNotificationBundle: ~ ApplicationSonataNotificationBundle: ~

助けてください。

4

2 に答える 2

0

あなたを使ってこれを行うためのより良い方法を見つけましたapp/config/config.yml

sonata_notification:
    class:
            message: MyDemoBundle\Entity\Message
于 2014-11-26T10:09:07.757 に答える
0

自分で解決策を見つけた、

SonataNotificationBundle コードを掘り下げました。

彼らは持っている、

<services>
    <service id="sonata.notification.entity_manager" alias="doctrine.orm.default_entity_manager" />

    <service id="sonata.notification.manager.message.default" class="Sonata\NotificationBundle\Entity\MessageManager">
        <argument type="service" id="sonata.notification.entity_manager" />
        <argument>%sonata.notification.message.class%</argument>
    </service>
</services>

デフォルトのエンティティ マネージャがほとんど結合されていないため、SonataNotificationBundle をカスタム エンティティ マネージャの下に移動しても機能しません。

これを修正するために、同じ名前で config.yml にサービスを作成し、それにカスタム エンティティ マネージャーを渡しました。

services:
    sonata.notification.entity_manager:
        alias: doctrine.orm.em2_entity_manager
于 2013-08-01T11:37:29.587 に答える