2013-05-16 18 views
1

我在cakephp 2.3中創建的應用程序中使用了兩個數據庫。 MySQL數據庫,其典型地被配置,並且另一數據庫的NoSQL(MongoDB的),我使用這種方式,例如:如何最好在cakephp 2.3中使用兩個數據庫?

$connection = new Mongo('localhost'); 
$db = $connection->compras; 
return $db->anuncios->insert($dados); 

我可以用這種方式? 關於安全...,你們認識到用這種方式使用mongo數據庫有什麼可能的問題?

回答

2

您對安裝環境的應用程序,它的意思是你要使用哪個數據庫/配置/ core.php中文件的模式,即生產,開發,下面

if(env('HTTP_HOST')): 
     switch (env('HTTP_HOST')) { 
    case "example.com": 
    case "www.example.com": 
    define('DEVELOPMENT_MODE', false); // Suppose you're using production for Mysql databse 
    break; 

    case "development.example.com": 
    define('DEVELOPMENT_MODE', true); // Suppose you're using development for MongoDB 
    break; 

    default: 
    define('DEVELOPMENT_MODE', true); 
    break; 
    } 

分期等你以後「已經使用DEVELOPMENT_MODE變量在app /配置/ database.php中文件作爲即

class DATABASE_CONFIG { 
    public $default = array(
    'datasource' => 'Database/Mysql', 
    'persistent' => false, 
    'host' => 'localhost', 
    'login' => 'db_username', 
    'password' => 'db_password', 
    'database' => 'db_name', 
    //'prefix' => '', 
    'encoding' => 'utf8', 
); 
    var $mongo = array(
    'datasource' => 'mongodb.mongodbSource', 
    'persistent' => false, 
    'host' => 'localhost', 
    'login' => 'db_username', 
    'password' => 'db_password', 
    'database' => 'db_name', 
    //'prefix' => '', 
    'encoding' => 'utf8', 
); 

    public function __construct() { 
    if (DEVELOPMENT_MODE) { 
     $this->default = $this->mongo; 
    } else { 
     $this->default = $this->default; 
    } 
    } 
    } 

所有上述邏輯下面是使用用於配置設置通過出應用程序中使用。

現在下面的代碼是將Model連接到mongoDB。

class Test extends AppModel { 
     var $name = 'test'; 
     var $primaryKey = 'id'; 
     var $useDbConfig = 'mongo'; // setup the mongodb datasource 

     // Now is model is connected with mongoDB only.... 
    } 
+0

謝謝!我將改變應用程序,使其以這種方式工作。 –

相關問題