如何在CakePHP中动态更改所有模型与数据库的连接

如何在CakePHP中动态更改所有模型与数据库的连接,cakephp,Cakephp,我想动态更改与数据库的连接,从函数中获取当前数据库名称 $DataSource=$this->getDataSource()->config['database'] 并将其保存到模型“CurrentDb”,这就是问题所在,我无法在_construct()AppModel中读取此模型,并使用 $this->setDataSource($current_bd); 你为什么要这么做?可能您正在尝试做一些您不必做的事情。有两个数据库,测试和生产,希望在不编辑数据库的情况下在它们之间快速切换。ph

我想动态更改与数据库的连接,从函数中获取当前数据库名称

$DataSource=$this->getDataSource()->config['database']

并将其保存到模型“CurrentDb”,这就是问题所在,我无法在_construct()AppModel中读取此模型,并使用

$this->setDataSource($current_bd);

你为什么要这么做?可能您正在尝试做一些您不必做的事情。有两个数据库,测试和生产,希望在不编辑数据库的情况下在它们之间快速切换。phpI建议,一旦运行,永远不要将您的实时版本更改为另一个数据库。最好让两个站点相邻运行
example.com
dev.example.com
其中
dev.
链接到另一个数据库。这也将使你有机会开发新功能,修复错误,并通过测试,而不必让你的主网站离线。TL;DR,永远不要让你的实时网站去测试新功能。确保它在本地和/或在您的开发服务器上进行了彻底的测试。谢谢Jelmer的建议,但我不得不使用动态更改,我通过组件会话进行了更改。您能解释为什么吗?我真的很好奇为什么你“不得不”这么做。