目录

  • 安装mongodb数据库

  • 安装php_mongodb扩展

  • 安装yii2-mongodb扩展和配置

  • 测试功能

安装mongodb数据库

1、下载mongodb

下载地址:https://www.mongodb.org/downloads#production

图片描述

2、添加系统变量

在系统变量中找到“Path”变量,选中后双击,并在变量最后添加bin文件所在的文件路径:C:\Program Files\MongoDB\Server\3.4\bin;

3、开始启动MongoDB数据库

  1. MongoDB在数据库启用之前,需要先建立一个文件夹(数据目录),用于存储这个数据库运行中的所有数据。文件夹路径:E:\MongoDBData

  2. 在命令行工具中,执行以后代码,即可启动数据库:mongod --dbpath E:\MongoDBData

  3. 提示Waiting for connections on port 27017 说明:数据库已经启用成功,正在等待连接,数据库的默认访问端口是27017,请不要关闭该cmd

4、测试MongoDB数据库

在命令行工具中

> mongo //进入mongoDB后台后,它默认会链接到 test 文档(数据库)
> db //查看当前数据库
> use test //切换数据库
> ...更多命令语句自行查找

5、安装 Rockmongo 管理工具

Git下载地址:https://github.com/iwind/rockmongo.git

其他的管理工具 http://www.mongoing.com/archives/3651

6、学习教程

http://www.runoob.com/mongodb/mongodb-tutorial.html

安装php_mongodb扩展

  1. https://pecl.php.net/package/mongodb 的DLL List找到对应的版本,注意你的php版本、Thread Safety是否启用、和系统位数

  2. 我这里下载的是 php_mongodb-1.3.2-7.0-nts-vc14-x86 32位 php7.0 nts(非线程安全)

  3. 找到你的php安装目录下的 ext,把里面的文件php_mongodb.dll放进去

  4. 打开php.ini加入 extension=php_mongodb.dll

  5. 重启环境,查看phpinfo是否已经开启了mongodb扩展

安装yii2-mongodb扩展

1、安装前一定要先按照流程先安装上面的环境

composer require yiisoft/yii2-mongodb

2、在main-local.php配置mongodb数据库信息

        'mongodb' => [
            'class' => 'yii\mongodb\Connection',
            // 有账户的配置
            //'dsn' => 'mongodb://username:password@localhost:27017/datebase',
            // 无账户的配置
            'dsn' => 'mongodb://127.0.0.1:27017/rageframe',
            // 复制集
            //'dsn' => 'mongodb://10.10.10.252:10001/erp,mongodb://10.10.10.252:10002/erp,mongodb://10.10.10.252:10004/erp?replicaSet=terry&readPreference=primaryPreferred',
        ],

3、在main-local.php配置mongodb gii

    $config['bootstrap'][] = 'mongodbgii';
    $config['modules']['mongodbgii'] = [
        'class' => 'yii\gii\Module',
        'allowedIPs' => ['127.0.0.1', '::1'],
        'generators' => [
            'mongoDbModel' => [
                'class' => 'yii\mongodb\gii\model\Generator'
            ]
        ],
    ];

访问地址:你的域名/mongodbgii.html

测试功能

1、模型文件

<?php
namespace jianyan\basics\common\models\test;

use Yii;

/**
 * This is the model class for collection "customer".
 *
 * @property \MongoDB\BSON\ObjectID|string $_id
 * @property mixed $id
 * @property mixed $name
 * @property mixed $province
 * @property mixed $city
 * @property mixed $town
 * @property mixed $address
 * @property mixed $lng
 * @property mixed $lat
 * @property mixed $create_time
 */
class MongoDb extends \yii\mongodb\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function collectionName()
    {
        return ['mongo_test', 'customer'];
    }

    /**
     * @inheritdoc
     */
    public function attributes() {
        return [
            '_id',
            'id',
            'name',
            'province',
            'city',
            'town',
            'address',
            'lng',
            'lat',
            'create_time',
            'status',
        ];
    }

    /**
     * @inheritdoc
     * 参考 YII2,rules规则
     */
    public function rules() {
        return [
            [['name', 'province', 'city', 'town', 'address'], 'required'],
            [['id', 'name', 'province', 'city', 'town', 'address', 'lng', 'lat', 'create_time', 'status'], 'safe'],
            [['province', 'city', 'town'], 'integer'],
            [['name'], 'string', 'max' => 20],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels() {
        return [
            '_id' => 'ID',
            'id' => 'Id',
            'name' => 'Name',
            'province' => 'Province',
            'city' => 'City',
            'town' => 'Town',
            'address' => 'Address',
            'lng' => 'Lng',
            'lat' => 'Lat',
            'create_time' => 'Create Time',
        ];
    }

}

2、控制器

<?php
namespace jianyan\basics\backend\modules\sys\controllers;

use yii;
use jianyan\basics\common\models\test\MongoDb;

/**
 * 测试控制器
 *
 * Class TestController
 * @package jianyan\basics\backend\modules\sys\controllers
 */
class TestController
{
    public $id = 123456;

    public function actionIndex()
    {
        $model = MongoDb::find()->where(['id' => $this->id])->one();

        print_r($model);
    }

    public function actionEdit()
    {
        $model = MongoDb::find()->where(['id' => $this->id])->one();
        if (!$model)
        {
            $model = new MongoDb();
        }

        $model->id = $this->id;
        $model->name = "测试1";
        $model->province = 1;
        $model->city = 2;
        $model->town = 3;
        $model->address = "测试2";
        $model->save();
    }

    public function actionDel()
    {
        $model = MongoDb::find()->where(['id' => $this->id])->one();
        $model->delete();
        var_dump($model);
    }
}

3、输入地址进行访问,主要要开启mongodb运行环境


上次更新:2018-08-14