2012-03-14 63 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的其他功能。

相關問題