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’的话在查询时是不会显示出来的