Mogodb在cakephp中的應(yīng)用
來(lái)源:程序員人生 發(fā)布時(shí)間:2014-09-11 08:19:54 閱讀次數(shù):4195次
CakePHP是一個(gè)非常受歡迎的PHP框架,它有專門的 MongoDB datasource 類包。這里專門有一篇介紹CakePHP框架如何使用MongoDB存儲(chǔ)的文章:Using
MongoDb with CakePHP。具體訪問(wèn)地址:http://mark-story.com/posts/view/using-mongodb-with-cakephp。
MongoDB datasource的兩種方式:
- 下載一
- 下載二(git下載方式)
現(xiàn)在具體說(shuō)一下MongoDB在CakePHP中的配置與應(yīng)用:
類庫(kù)存放
我們可以存放在Vendor或者Plugin目錄下,然后再在AppController中引用就可以,具體就不贅述!
配置
在/config/database.php中配置MongoDB:
public $mongo = array(
'datasource' => 'Mongodb.MongodbSource',
'persistent' => false,
'host' => '127.0.0.1',
'login' => 'root',
'password' => 'root',
'port' => 27017,
'database' => 'mongoblog',
'prefix' => '',
//'encoding' => 'utf8',
);
AppController引用
CakePlugin::load('Mongodb');//這是把類庫(kù)放在了Plugin目錄下的引用方式
class AppController extends Controller {
public function beforeFilter(){
parent::beforeFilter();
$module = $this->name;
$action = $this->action;
}
}
我們可以在Controller中組織好我們需要Insert或update等的數(shù)據(jù)。然后再訪問(wèn)調(diào)用Model。下面再看一下Model是怎樣的?
Model中的應(yīng)用
看段代碼
class Recodelog extends AppModel{
/**
* 模型名稱
*
* @var string
* @access public
*/
public $name = "Recodelog"; //類名稱
/**
* 無(wú)默認(rèn)使用表
*
* @var string
* @access public
*/
public $useTable = 'logrecode';//你要訪問(wèn)的MongoDB中庫(kù)的Collection
/**
* 默認(rèn)使用數(shù)據(jù)庫(kù)配置
*
* @var string
* @access public
*/
public $useDbConfig = 'mongo'; //使用的數(shù)據(jù)庫(kù)
public $primaryKey = '_id';
//Collection的字段結(jié)構(gòu)與類型
public $mongoSchema = array(
'user_id' => array('type'=>'integer'),
'user_name' => array('type'=>'string'),
'operate_module_name'=>array('type'=>'string'),
'operate_function_name'=>array('type'=>'string'),
'operate_ip'=>array('type'=>'string'),
'operate_time'=>array('type'=>'datetime')
);
/**
*
* @param $recodeInfo
*/
public function addLogRecode($recodeInfo = array()){
$flag = $this->save(array('user_id'=>$recodeInfo['id'], 'user_name'=>$recodeInfo['username'], 'operate_module_name'=>$recodeInfo['module'],
'operate_function_name'=>$recodeInfo['action'],'operate_ip'=>$recodeInfo['ip'],'operate_time'=>$recodeInfo['time']));
return $flag;
}
}
這段代碼包括了MongoDB中Collection的選擇及添加一條記錄。可以看到用的是save方法。具體可以看手冊(cè):
這樣就應(yīng)該知道save這個(gè)方法怎么用了!其實(shí)save里接收的是一個(gè)數(shù)組,數(shù)組鍵為你字段名稱。
下面是我測(cè)試的成果,有數(shù)據(jù)為證:
生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)