更改cakephp3中的默认数据库

更改cakephp3中的默认数据库,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,在控制器中,我希望更改默认数据库,以便可以从网站的任何位置访问新的db(db2)。db2数据库具有相同的模型,但数据不同。我的代码只是访问另一个数据库,但没有将新的默认数据库设置为db2,db2可以在网站的任何地方访问。我没有从下面的帖子中得到答案 这是我的控制器: $connection=ConnectionManager::get('db2');/'db2'配置第二个数据库的位置 $results=$connection->execute('SELECT*FROM tutors')->fet

在控制器中,我希望更改默认数据库,以便可以从网站的任何位置访问新的db(db2)。db2数据库具有相同的模型,但数据不同。我的代码只是访问另一个数据库,但没有将新的默认数据库设置为db2,db2可以在网站的任何地方访问。我没有从下面的帖子中得到答案

这是我的控制器:

$connection=ConnectionManager::get('db2');/'db2'配置第二个数据库的位置
$results=$connection->execute('SELECT*FROM tutors')->fetchAll('assoc');
//这可以工作,但不会将默认数据库设置为db2 everywhere
这是我的app.php:

“数据源”=>[
“默认值”=>[
'className'=>'Cake\Database\Connection',
'driver'=>'Cake\Database\driver\Mysql',
'persistent'=>false,
'主机'=>'本地主机',
//“端口”=>“非标准端口号”,
'用户名'=>'根',
'密码'=>'',
'数据库'=>'aptutori_测试',
'编码'=>'utf8',
“时区”=>“+11:00”,
“标志”=>[],
'cacheMetadata'=>true,
'log'=>false,
“quoteIdentifiers”=>false,
'url'=>env('DATABASE_url',null),
],
'db2'=>[
'className'=>'Cake\Database\Connection',
'driver'=>'Cake\Database\driver\Mysql',
'persistent'=>false,
'主机'=>'本地主机',
//“端口”=>“非标准端口号”,
'用户名'=>'根',
'密码'=>'',
“数据库”=>“aptutori_testbak”,
'编码'=>'utf8',
“时区”=>“+11:00”,
“标志”=>[],
'cacheMetadata'=>true,
'log'=>false,
“quoteIdentifiers”=>false,
'url'=>env('DATABASE_url',null),
],


使用
连接管理器::别名()

例如,这将使所有需要
default
连接才能使用
db2
的表:

ConnectionManager::alias('db2', 'default');

使用
ConnectionManager::alias()

例如,这将使所有需要
default
连接才能使用
db2
的表:

ConnectionManager::alias('db2', 'default');

您可以在>cake 3.3中的中间件中在整个应用程序中执行此操作,而不是使用DispatcherFilter,如中所述


您可以在cake 3.3中的中间件中在整个应用程序中执行此操作,而不是使用DispatcherFilter,如中所述


我需要它对每个控制器都有效,所以我需要全局设置它。我的问题是数据库(上面的代码)只有控制器功能的更改,但我有大约30个控制器。如何在所有控制器/模型中全局设置此更改AppController类是应用程序所有控制器的父类如何在控制器中设置全局变量,然后在AppController中设置。如何在ppController,然后每个控制器都会使用它。我需要它为每个控制器工作,所以我需要全局设置它。我的问题是数据库(上面的代码)只有控制器功能的更改,但我有大约30个控制器。如何在所有控制器/模型中全局设置此更改AppController类是应用程序所有控制器的父类如何在控制器中设置全局变量,然后在AppController中设置。如何在ppController,然后每个控制器都将使用它。