thinkphp支援mongodb的GridFS
阿新 • • 發佈:2018-12-24
前言
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(); } } } ?>