1

我在 cakephp 2.3 中创建的应用程序中使用了两个数据库。一个mysql数据库,通常配置,另一个数据库nosql(MongoDB),我用这种方式例如:

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

我可以用这种方式吗?关于安全性...,你们意识到以这种方式使用 mongo 数据库可能会遇到哪些问题?

4

1 回答 1

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;
    }
  }
    }

以上所有逻辑都用于配置设置以在整个应用程序中使用。

现在下面的代码是将模型连接到 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....
    }
于 2013-05-18T05:14:58.373 回答