如何处理多个实体管理器和连接

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 2.3,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

如何处理多个实体管理器和连接

您可以使用多个教义的实体管理器或连接在Symfony应用程序。ob娱乐下载这是必要的,如果您使用的是不同的数据库,甚至供应商与完全不同的实体。换句话说,一个连接到一个数据库的实体管理器将处理一些实体,而另一个实体管理器,连接到另一个数据库可能会处理剩下的。

请注意

使用多个实体管理器非常简单,但更先进,通常不是必需的。确保你真正需要的多个实体管理器添加在这一层的复杂性。

下面的配置代码展示了如何配置两个实体管理器:

  • YAML
  • XML
  • PHP
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17日18 19 20 21日22日23日24日25日26日27 28 29 30 31 32 33
原则:dbal:default_connection:默认的连接:默认值:司机:“% database_driver %”主持人:“% database_host %”端口:“% database_port %”dbname:“% database_name %”用户:“% database_user %”密码:“% database_password %”字符集:use UTF8顾客:司机:“% database_driver2%”主持人:“% database_host2%”端口:“% database_port2%”dbname:“% database_name2%”用户:“% database_user2%”密码:“% database_password2%”字符集:use UTF8orm:default_entity_manager:默认的entity_managers:默认值:连接:默认的映射:AppBundle:~AcmeStoreBundle:~顾客:连接:客户映射:AcmeCustomerBundle:~

在这种情况下,您已经定义了两个实体管理器和叫他们默认的客户。的默认的实体管理器管理实体AppBundle AcmeStoreBundle,虽然客户实体管理器管理AcmeCustomerBundle中的实体。您还定义了两个连接,每个实体管理器一个。

请注意

在处理多个连接和实体管理器时,你应该明确你想要的配置。如果你<新兴市场>做省略连接或实体管理器的名称,默认的(即。默认的使用)。

在处理多个连接创建数据库:

1 2 3 4 5
#玩只有“默认”连接$ php应用程序/控制台学说:数据库:创建#玩只与“客户”连接美元php应用程序/控制台学说:数据库:创建——连接=客户

在处理多个实体管理器更新模式:

1 2 3 4 5
#玩只有“默认”映射php应用程序/控制台学说:美元模式:更新——力量#玩只与“客户”的映射php应用程序/控制台学说:美元模式:更新-力- em =客户

如果你<新兴市场>做省略实体管理器的名字当要求时,默认的实体管理器(即。默认的返回:

1 2 3 4 5 6 7 8 9 10 11 12 13 14
用户控件扩展控制器{公共函数indexAction(){/ /这三个返回“默认”实体管理器美元新兴市场=美元- >get (“原则”)- >getManager ();美元新兴市场=美元- >get (“原则”)- >getManager (“默认”);美元新兴市场=美元- >get (“doctrine.orm.default_entity_manager”);/ /这两个返回“客户”的实体管理器美元customerEm=美元- >get (“原则”)- >getManager (“客户”);美元customerEm=美元- >get (“doctrine.orm.customer_entity_manager”);}}

现在可以使用学说就像你之前做的——使用默认的实体管理器保存和获取它管理实体客户实体管理器持续并获取其实体。

这同样适用于存储库调用:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日
用户控件扩展控制器{公共函数indexAction(){/ /获取存储库管理的“默认”美元产品=美元- >get (“原则”)- >getRepository (“AcmeStoreBundle:产品”)- >findAll ();/ /显式方法处理“默认”美元产品=美元- >get (“原则”)- >getRepository (“AcmeStoreBundle:产品”,“默认”)- >findAll ();/ /获取存储库管理的“客户”美元客户=美元- >get (“原则”)- >getRepository (“AcmeCustomerBundle:客户”,“客户”)- >findAll ();}}
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。