程序员人生 网站导航

Mogodb在cakephp中的应用

栏目:CakePHP时间:2014-09-11 08:19:54

CakePHP是一个非常受欢迎的PHP框架,它有专门的 MongoDB datasource 类包。这里专门有一篇介绍CakePHP框架如何使用MongoDB存储的文章:Using MongoDb with CakePHP。具体访问地址:http://mark-story.com/posts/view/using-mongodb-with-cakephp。

MongoDB datasource的两种方式:

  1.   下载一
  2.   下载二(git下载方式)
现在具体说一下MongoDB在CakePHP中的配置与应用:
类库存放
我们可以存放在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');//这是把类库放在了Plugin目录下的引用方式 class AppController extends Controller { public function beforeFilter(){ parent::beforeFilter(); $module = $this->name; $action = $this->action; } }
我们可以在Controller中组织好我们需要Insert或update等的数据。然后再访问调用Model。下面再看一下Model是怎样的?
Model中的应用
看段代码
class Recodelog extends AppModel{ /** * 模型名称 * * @var string * @access public */ public $name = "Recodelog"; //类名称 /** * 无默认使用表 * * @var string * @access public */ public $useTable = 'logrecode';//你要访问的MongoDB中库的Collection /** * 默认使用数据库配置 * * @var string * @access public */ public $useDbConfig = 'mongo'; //使用的数据库 public $primaryKey = '_id'; //Collection的字段结构与类型 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方法。具体可以看手册:


及实例

这样就应该知道save这个方法怎么用了!其实save里接收的是一个数组,数组键为你字段名称。
下面是我测试的成果,有数据为证:



------分隔线----------------------------
------分隔线----------------------------

最新技术推荐