yii2框架 操作 mongodb 数据库实例教程

作者:袖梨 2022-06-25

一:安装yii2  关于安装yii2我们就不??铝耍?故抢??omposer安装下载,我们可以安装basic

模版

composer global require "fxp/composer-asset-plugin:~1.0.3"
 composer create-project --prefer-dist yiisoft/yii2-app-basic basic

或者是advanced

composer global require "fxp/composer-asset-plugin:~1.0.3"
 composer create-project --prefer-dist yiisoft/yii2-app-advanced yii-application

安装过程需要输入github密钥,按照提示操作即可

二:yii2 soft 自带mongodb,安装追加composer

composer require --prefer-dist yiisoft/yii2-mongodb

/vendor/yiisoft/yii2-mongodb引入了mongodb

三:使用方法crud

config/web.php

'mongodb' => [
'class' => 'yiimongodbConnection',
'dsn' => 'mongodb://tank:[email protected]:27017/admin',
],

use yiimongodbQuery;
 
public function actionIndex()
{
 
$query = new Query;
// compose the query
$query->select(['_id', 'sex'])
->from('admin')
->limit(10);
// execute the query
$rows = $query->all();
 
print_r($rows);
 
// return $this->render('index');
}



Yii框架中使用mongodb扩展

前提条件:安装了mongodb数据库

              安装了mongo的php驱动

下载Yii的mongo扩展:

这是YiiMongoDbSuite的1.3.6版本
支持PHP Mongo驱动的版本为1.0.5及以下

下载链接:http://pan.baidu.com/s/1jGuWP1O

其它版本下载链接:https://github.com/canni/YiiMongoDbSuite

得到文件:YiiMongoDbSuite.tar.gz

解包,并将该文件放至应用的/protected/extensions文件夹下面

确保文件夹名称为:YiiMongoDbSuite

配置应用

vi /protected/config/main.php



 'import' => array(  
      ...  
      'ext.YiiMongoDbSuite.*',    // 插件根目录文件  
    ),

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

这样就配置好了,当然,请确保你的mongodb安装在本地,并且端口号是27107上面的配置才能连接得上。

下面测试一下Model:

将以下代码放至/protected/models/User.php里

class User extends EMongoDocument
{
  public $login;
  public $name;
  public $pass;

  // This has to be defined in every model, this is same as with standard Yii ActiveRecord
  public static function model($className=__CLASS__)
  {
    return parent::model($className);
  }

  // This method is required!
  public function getCollectionName()
  {
    return 'users';
  }

  public function rules()
  {
    return array(
      array('login, pass', 'required'),
      array('login, pass', 'length', 'max' => 20),
      array('name', 'length', 'max' => 255),
    );
  }

  public function attributeLabels()
  {
    return array(
      'login'  => 'User Login',
      'name'   => 'Full name',
      'pass'   => 'Password',
    );
  }
}

在控制器里测试一下

$users = User::model()->findAll();
var_dump($users);

如果没有报错,那说明可以正常使用了。

相关文章

精彩推荐