在cakePHP3中即时切换数据库

时间:2017-01-12 14:16:49

标签: cakephp cakephp-3.0

我想切换到辅助数据库来测试控制器中的特定功能。我在网上遇到的所有解决方案都说明了我应该使用的解决方案 ConnectionManager::alias('test', 'default');

嗯,我这样做了,但这对我来说似乎没什么用。

我写了以下几行来测试数据库切换是否成功

$stores = TableRegistry::get('Stores')->find('list')->toArray();
debug($stores);
ConnectionManager::alias('test', 'default');
$stores = TableRegistry::get('Stores')->find('list')->toArray();      
debug($stores);
exit;

但是调试给出了完全相同数据的两倍,而测试数据库上的stores表有其他数据。所以数据库交换机并没有真正起作用。

任何人都知道我在这里做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

$connection= ConnectionManager::get('test');
$result= $connection->execute('SELECT * FROM stores WHERE ...')->fetchAll('assoc');

die(debug($result));

https://book.cakephp.org/3.0/en/orm/database-basics.html

编辑:

$stores = TableRegistry::get('Stores')->find('list')->toArray();
TableRegistry::clear();
debug($stores);
ConnectionManager::alias('test', 'default');
$stores = TableRegistry::get('Stores')->find('list')->toArray();      
debug($stores);
exit;