【问题标题】:Symfony Define the database for authenticationSymfony 定义用于身份验证的数据库
【发布时间】:2015-11-13 12:41:39
【问题描述】:

我正在使用 Symfony2 进行一个项目,现在我可以在我的网站上进行身份验证。

但我现在的问题是,当用户想要进行身份验证时,出于某些原因我想使用另一个数据库。 那么我如何让 symfony 使用 db2 进行身份验证,使用 db1 进行网站呢?

如果有人可以帮助我,谢谢!

编辑:

谢谢你的回答,我写这个:

    orm:
    auto_generate_proxy_classes: %kernel.debug%
    default_entity_manager: default
    entity_managers:
        default:
            connection: default
            mappings:
                ContactBundle:  ~
        users:
            connection: general
            mappings:
                UsersBundle: ~

但我有这个错误:

在链配置的命名空间 SymagContact\Bundle\SymagContactBundle\Entity 中找不到类“SymagContact\Bundle\UsersBundle\Entity\Users”

【问题讨论】:

  • 那么我假设您的联系人实体与用户实体相关是否正确?
  • 你所说的“相关”是什么意思?
  • 你有两个实体之间的 Doctrine 2 映射吗?用户和联系人之间是否存在一对多关系?您的联系人包中是否有与用户实体关联的实体?错误消息似乎表明存在。
  • 我的用户实体与联系人包中的任何实体都没有关联...
  • 反之亦然?您的联系人实体都没有与您的用户捆绑实体关联吗?讨厌一直问,但错误消息表明有。

标签: database symfony authentication


【解决方案1】:

当然你可以有多个EntityManager:

你必须像这样设置你的 DBAL 连接:

# Doctrine Configuration
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

            db2:
                driver:   "%db2_database_driver%"
                host:     "%db2_database_host%"
                port:     "%db2_database_port%"
                dbname:   "%db2_database_name%"
                user:     "%db2_database_user%"
                password: "%db2_database_password%"

然后在 ORM 部分中,您可以将 UserBundle 命名空间映射到 db2 连接:

doctrine:
    orm:
        default_entity_manager: default
        entity_managers:
            default:
                connection: default
                mappings:
                    AppBundle:  ~
                    AcmeStoreBundle: ~
            customer:
                connection: db
                mappings:
                    AcmeUserBundle: ~

其余的都是一样的:在 UserProviderInterface 之后注册一个 UserProvider。

更多信息请参见http://symfony.com/doc/current/cookbook/doctrine/multiple_entity_managers.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-04
    • 2021-04-18
    • 2019-05-14
    • 2021-08-02
    • 2012-10-12
    • 1970-01-01
    • 2011-02-20
    • 2010-09-13
    相关资源
    最近更新 更多