如何使用cakephp应用程序连接到第二个数据库

如何使用cakephp应用程序连接到第二个数据库,cakephp,Cakephp,我的应用程序要求显示magento数据库表的数据,例如驻留在本地连接pc上的admin_用户。 因此,我需要在显示、修改等过程中保持cakephp数据库值不变,并且只需在一个页面中打印和更新magento的数据库值 我在database.php中保留了2个变量 public $default = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'local

我的应用程序要求显示magento数据库表的数据,例如驻留在本地连接pc上的admin_用户。 因此,我需要在显示、修改等过程中保持cakephp数据库值不变,并且只需在一个页面中打印和更新magento的数据库值

我在database.php中保留了2个变量

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'root',
    'password' => '',
    'database' => 'myappdatabase',
    'prefix' => '',
    //'encoding' => 'utf8',
);
    var $vsdatabase = array(    
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => '192.168.1.36',   
    'login' => 'root',          
    'password' => '',           
    'database' => 'magento',    
    'prefix' => '',
    );
在控制器中

     App::import('Model','ConnectionManager');
$db = ConnectionManager::getDataSource('vsdatabase');
$database = $db->config['database'];
$data = $this->User->query("select * from $database.admin_user as t1");
如上所述,我喜欢保留的主机意味着默认主机来自本地数据库,另一个是远程PC的magento数据库 如果我和主机保持相同,那么它工作,但如果写入不同,那么它不工作

那么我能解决这个问题吗?
请帮助我找出解决方案,您所做的完全是错误的,即使您使用该代码,它也应该属于模型而不是控制器

只需创建一个以magento表命名的新模型,但我会在它前面加上magento之类的前缀。必须将模型配置为使用此db连接

class MagentoUser extends AppModel {
    public $useDbConfig = 'vsdatabase';
}
您还可以使用ClassRegistry动态初始化具有其他别名和数据源的模型。看


不要使用普通的SQL查询,您很可能会编写不安全的查询,并失去CakePHP ORM的其他功能。

您所做的是完全错误的,即使您使用该代码,它也应该属于模型而不是控制器

只需创建一个以magento表命名的新模型,但我会在它前面加上magento之类的前缀。必须将模型配置为使用此db连接

class MagentoUser extends AppModel {
    public $useDbConfig = 'vsdatabase';
}
您还可以使用ClassRegistry动态初始化具有其他别名和数据源的模型。看

不要使用简单的SQL查询,您很可能会编写不安全的查询,并失去CakePHP ORM的其他功能