2012-03-14 62 views
0

我的应用程序的要求是显示驻留在本地连接的PC上的magento数据库表例如admin_user的数据。 所以我需要保持它在我的cakephp数据库中的值显示修改等,并且只有一页magento的数据库值需要打印和更新。如何使用我的cakephp应用程序连接到第二个数据库

我一直保持2个变量databse.php

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数据库 如果我两个主机保持相同,那么它的工作,但如果写不同然后它不工作

所以我解决这个问题? Plz帮助我找出解决方案

回答

3

你所做的是明显错误的,即使你使用该代码,它应该属于模型而不是控制器。

只需创建一个以magento表格命名的新模型,但我会在其前面添加magento或其他东西。该模型必须配置为使用此数据库连接。

class MagentoUser extends AppModel { 
    public $useDbConfig = 'vsdatabase'; 
} 

您还可以使用ClassRegistry在运行中初始化具有其他别名和数据源的模型。请参阅http://api20.cakephp.org/class/class-registry#method-ClassRegistryinit

并且远离使用普通SQL查询,您很可能会写出不安全的查询并丢失CakePHP ORM的其他功能。

相关问题