您的位置:首页 > 数据库 > Mongodb

yii框架:MongoDB 插件 YiiMongoDbSuite 使用方法

2014-10-28 23:01 627 查看
YiiMongoDbSuite下载地址: http://www.yiiframework.com/extension/yiimongodbsuite/
本文介绍yii框架使用 mongodb 数据库插件 YiiMongoDbSuite 的用法,阅读之前请确认mongodb环境已经搭建好(具体方法请参考本站其他教程),并且YiiMongoDbSuite已经放在protected/extensions路径下,因此你protected/config/main.php 应该是这样的

'import' => array(

      ...

      'ext.YiiMongoDbSuite.*',

    ),

    'components' => array(

      ...

      'mongodb' => array(

        'class'            => 'EMongoDB',

        'connectionString' => 'mongodb://localhost',

        'dbName'           => 'uncletoo',

        '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();

        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’的话在查询时是不会显示出来的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息