我在Cakephp 2.3中创建的应用程序中使用了两个数据库。一个mysql数据库,通常配置,和另一个数据库nosql(MongoDB),我用这种方式例如:
$connection = new Mongo('localhost');
$db = $connection->compras;
return $db->anuncios->insert($dados);
我可以用这种方式吗?
关于安全......,你们认识到使用mongo数据库的那种可能的问题是什么?
答案 0 :(得分:2)
您需要在app / Config / 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;
}
之后你必须在app / Config / database.php文件中使用DEVELOPMENT_MODE变量,如下所示。
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....
}