修正mongo模型不能连接及报setField方法不存在的问题

This commit is contained in:
huangdijia
2015-12-17 11:31:14 +08:00
parent c2bca247be
commit 301c1b9f3f
2 changed files with 11 additions and 4 deletions

View File

@@ -65,7 +65,7 @@ class Mongo extends Driver
{ {
if (!isset($this->linkID[$linkNum])) { if (!isset($this->linkID[$linkNum])) {
if (empty($config)) { if (empty($config)) {
$config = $this->config['connection']; $config = $this->config;
} }
$host = 'mongodb://' . ($config['username'] ? "{$config['username']}" : '') . ($config['password'] ? ":{$config['password']}@" : '') . $config['hostname'] . ($config['hostport'] ? ":{$config['hostport']}" : '') . '/' . ($config['database'] ? "{$config['database']}" : ''); $host = 'mongodb://' . ($config['username'] ? "{$config['username']}" : '') . ($config['password'] ? ":{$config['password']}@" : '') . $config['hostname'] . ($config['hostport'] ? ":{$config['hostport']}" : '') . '/' . ($config['database'] ? "{$config['database']}" : '');
@@ -95,6 +95,8 @@ class Mongo extends Driver
$this->initConnect($master); $this->initConnect($master);
} }
$db = $db?$db:$this->config['database'];
try { try {
if (!empty($db)) { if (!empty($db)) {
// 传人Db则切换数据库 // 传人Db则切换数据库

View File

@@ -13,12 +13,16 @@ namespace think\model;
use think\Lang; use think\Lang;
use think\Loader; use think\Loader;
T('modle/adv');
/** /**
* MongoModel模型类 * MongoModel模型类
* 实现了ODM和ActiveRecords模式 * 实现了ODM和ActiveRecords模式
*/ */
class Mongo extends \Think\Model class Mongo extends \Think\Model
{ {
use \traits\model\adv;
// 主键类型 // 主键类型
const TYPE_OBJECT = 1; const TYPE_OBJECT = 1;
const TYPE_INT = 2; const TYPE_INT = 2;
@@ -164,7 +168,7 @@ class Mongo extends \Think\Model
return false; return false;
} }
if (empty($result)) { if (empty($result)) {
// 查询结果为空 // 查询结果为空
return null; return null;
} else { } else {
$this->checkMongoId($result); $this->checkMongoId($result);
@@ -237,9 +241,10 @@ class Mongo extends \Think\Model
} else { } else {
// 返回数据个数 // 返回数据个数
if (true !== $sepa) { if (true !== $sepa) {
// 当sepa指定为true的时候 返回所有数据 // 当sepa指定为true的时候 返回所有数据
$options['limit'] = is_numeric($sepa) ? $sepa : 1; $options['limit'] = is_numeric($sepa) ? $sepa : 1;
} // 查找一条记录 }
// 查找一条记录
$result = $this->db->find($options); $result = $this->db->find($options);
if (!empty($result)) { if (!empty($result)) {
if (1 == $options['limit']) { if (1 == $options['limit']) {