您的位置:首页 > 数据库 > Mongodb

thinkphp支持mongodb的GridFS

2015-12-11 10:49 561 查看
前言

Thinkphp本身是没有对mongodb的Gridfs进行封装支持的,所以在项目一些需要遇到以GridFS保存文件,例如图片,视频,文档文件之类时,却不能很好满足。如果要使用,又得同时连接连接Mongo数据库,对于在config.php里配置的数据库却显得有些大材小用。下面是对Tp框架的db类的一些修改,让TP可以支持Mongodb的Gridfs。

方法

(1)修改Tp框架的Think/Db/Driver/Mongo.class.php类。在文件中添加函数

/**
*mongo的GridFS的获取对象
** @param object GridFS
*/

public function getGridFS(){
return $this->_mongo->getGridFS();
}


(2)修改Think/Model/MongoModel.class.php.在文件中添加函数

/**
*mongo的GridFS的获取对象
** @param object GridFS
*/

public function getGridFS(){
return $this->db->getGridFS();
}
保存好这两个文件。

在控制器中的用法

<?php
namespace Home\Controller;
use Think\Controller;
class GridfsController extends Controller{
public function index(){
//获取数据库的对象
$mongo=new \Think\Model\MongoModel;
// 获取GridFS的对象
$G=$mongo->getGridFS();
/**
*GridFS操作的方法在tp中并没有封装,所以只能用原生的php_mongo的类的方法进行数据操作
*/
// 插入的参数数据
$metadata=array('uid'=>123456,"metadata" =>array("author" =>'bing'));
// 保存文件,返回id
$id=$G->storeFile($_SERVER['DOCUMENT_ROOT'].'/huang.txt',$metadata);

$cour=$G->find();
foreach ($cour as $obj) {
echo 'filename:'.$obj->getFilename();
}
}
}
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: