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’如果在查询的时刻没有显示出来

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

你可能感兴趣的:(mongodb)