如何处理多个实体管理器和连接
编辑该页面警告:你浏览的文档欧宝官网下载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许可证。