yii 用 mongodb 插件 YiiMongoDbSuite

来源:互联网 发布:布瑞克农产品数据库 编辑:程序博客网 时间:2024/06/05 06:38

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 注:先配置好vhostpublic 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/loginpublic 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’的话在查询时是不会显示出来的

0 1