zoukankan      html  css  js  c++  java
  • yii 使用 mongodb 小工具 YiiMongoDbSuite

    YiiMongoDbSuite下载链接: http://www.yiiframework.com/extension/yiimongodbsuite/

    如果你的yii和mongodb它已经建立了一个良好的环境,和YiiMongoDbSuite它被放置protected/extensions

    那么你protected/config/main.php 应该是这种

    'import' => array(
          ...
          'ext.YiiMongoDbSuite.*',
        ),
     
        'components' => array(
          ...
          'mongodb' => array(
            'class'            => 'EMongoDB',
            'connectionString' => 'mongodb://localhost',
            'dbName'           => 'myDatabaseName',
            'fsyncFlag'        => true,
            'safeFlag'         => true,
            'useCursor'        => false
          ),
        ),



    然后依据你自己的环境稍加改动就可以

    接下来開始写代码了看controller层代码, 凝视部分为採用原生的写法类似于你使用Yii::app()->db来获取数据库连接一样

    class LoginController extends Controller
    {
    	
    	//依据id查找用户比如 http://localhost:8082/api/login/UserList/415824043082514432 注:先配置好vhost
    	public function actionUserList($num) {
    		$_result = UserMongo::model()->findUser($num);
    		//$collection = Yii::app()->mongodb->getDbInstance()->selectCollection('pcztest');
    		//$_result = $collection->find();
    		$this->sendResponse(200, $_result);
    	}
    	
    	// http://localhost:8082/api/login
    	public function doRestCreate($data) {
    		$model = new UserMongo();
    		$model->ac = 'ac1';
    		$model->bc = 'bc2';
    		$res = $model->save();
    
    		//$collection = Yii::app()->mongodb->getDbInstance()->selectCollection('pcztest');
    		//$content = array(
    		//	'ac'=>'叶子-吴佰清',
    		//	'bc'=>'吴佰清',
    		//	'ff'=>234,
    		//	'dd'=>4444,
    		//	'cc'=>'cc'
    		//);
    		//$res = $collection->insert($content);
    		var_dump($res);
    	}
    }
    然后是model代码

    class UserMongo extends EMongoDocument
    {
    	public $ac, $bc;
     	public static function model($className = __CLASS__) {
     		return parent::model($className);
     	}
    	
    	public function getCollectionName()
    	{
    		return 'pcztest';
    	}
     	// public function tableName() {
     		// return '{{passport_users}}';
     	// }
    	
    	public function findUser($n) {
    		$results = $this->findAll();
    		return $results;
    	}
    }

    须要注意的问题:採用model调用save的方式保存跟原生insert保存差别不大,可是在查询时你的model层定义了那些属性仅仅会查出对应的属性,而其它的则不会查出来

    比如上面这个model仅仅定义了$ac, $bc;2如果你插入一个属性collection在一个场‘ff’如果在查询的时刻没有显示出来

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    【剑指Offer】面试题55
    一大波趣图:CSS的力量
    你必须收藏的Github技巧
    3月份GitHub上最热门的Java开源项目
    趣图:快下班了,剩一个bug,修复一下再走
    Java程序员必备的Intellij插件
    为什么前后端分离了,你比从前更痛苦?
    趣图:好好干,今天再加个班
    高并发下的下单功能设计
    Mybatis的基本要素--核心对象
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4661990.html
Copyright © 2011-2022 走看看