candy110 2014-09-04 17:38:29 21706次浏览 3条评论 10 2 0

做项目需要用到mongodb,因之前没用过mongo今天折腾了半天算是有个大概的了解,下面是我连接mongo做法写在次可以给需要的同学做个参考:
首先要搭建好你的yii以及安装好mongo环境(不会安装mongo的同学可以看下这篇博客http://www.cnblogs.com/mecity/archive/2011/06/11/2078527.html)。

我用到的就是YiiMongoDbSuite插件,这个插件可以到官网下载(http://www.yiiframework.com/extension/yiimongodbsuite/)。

下载好插件后解压到protected > extensions目录 我将文件夹命名为YiiMongoDbSuite,然后找到配置文件protected > config > main.php 在"半自动加载模型组件配置"的地方加载我们需要的YiiMongoDbSuite插件代码如下:

'import'=>array(
    'application.models.*',
    'application.components.*',
    'ext.YiiMongoDbSuite.*',
),

然后配置下mongo数据库链接代码如下:

'mongodb' => array(
    'class'            => 'EMongoDB', //主文件
    'connectionString' => 'mongodb://127.0.0.1:27017', //服务器地址
    'dbName'           => 'test',//数据库名称
    'fsyncFlag'        => true, //mongodb的确保所有写入到数据库的安全存储到磁盘
    'safeFlag'         => true, //mongodb的等待检索的所有写操作的状态,并检查
    'useCursor'        => false,
),

(在此我还遇到一个问题 我刚配置mongo数据库链接 不是用的"mongodb"结果导致操作库失败 到现在还不明白咋回事 是不是要在哪些地方做修改呢 请知道的朋友告知下 谢谢!)

数据库连接好后我们来操作数据库,看看模型代码:

class User extends EMongoDocument {
    public $z;
    public static function model($className = __CLASS__){
        return parent::model($className);
    }

    public function getCollectionName()
    {
        return 'foo';
    }

    public function addInfo() {
        $this->z='1234';
        $this->save();
    }
}

可以看到我的模型是继承EMongoDocument 不是yii默认的CActiveRecord.控制器代码如下(仅仅是做个插入测试):

public function actionIndex(){
    $model = new User();
    $model->addInfo();
}

至此一个简单测试完成。

觉得很赞
您需要登录后才可以评论。登录 | 立即注册