thinkphp Mongo模型的使用问题

先上官方使用Mongo模型开发文档

感觉写的不是很全,也许我不熟悉tp吧 😳

目前这个项目默认是连接MYSQL数据库

最近开发消息中心,涉及到在程序期间要连接Mongo数据库

最开始用了下面这个方式创建模式


define('MONGO_DB_HOST', '192.168.1.172');
define('MONGO_DB_PORT', 30000);
define('MONGO_DB_NAME', 'funbox_test');
define('MONGO_DSN', 'mongo://'.MONGO_DB_HOST.':'.MONGO_DB_PORT.'/'.MONGO_DB_NAME);

M('MongoModel:msg_log','',MONGO_DSN);

死活连不上funbox_test这个库,连上的是funbox,十分费解

最好耐下性子看了源码

MongoModel类中有$this->dbName这个参数没有任何赋值的地方,如果没有赋值,就会显示默认配置MYSQL的库名,MYSQL库我配置的是funbox,原来如此。

继续看父类Model,在Model类中的__construct发现了线索,第79行


$this->_initialize();
// 获取模型名称
if(!empty($name)) {
if(strpos($name,'.')) { // 支持 数据库名.模型名的 定义
list($this->dbName,$this->name) = explode('.',$name);
}else{
$this->name   =  $name;
}
}elseif(empty($this->name)){
$this->name =   $this->getModelName();
}

可以通过下面的写法来解决选择数据库的问题

M('MongoModel:'.MONGO_DB_NAME.'.msg_log','',MONGO_DSN);

研究了一个下午,希望能为大家排排雷。

发表评论

电子邮件地址不会被公开。 必填项已用*标注