首页 > 代码库 > Yii框架中使用mongodb扩展

Yii框架中使用mongodb扩展

前提条件:安装了mongodb数据库

              安装了mongo的php驱动

下载Yii的mongo扩展:

下载链接:http://pan.baidu.com/s/1rPtx0

官方下载链接:https://github.com/canni/YiiMongoDbSuite

得到文件:YiiMongoDbSuite.tar.gz

 

解包,并将该文件放至应用的/protected/extensions文件夹下面

确保文件夹名称为:YiiMongoDbSuite

配置应用

 1 vi /protected/config/main.php
 2 
 3 
 4 
 5  import => array(  
 6       ...  
 7       ext.YiiMongoDbSuite.*,    // 插件根目录文件  
 8     ), 
 9 
10     components => array(  
11       ...  
12       mongodb => array(  
13         class            => EMongoDB, //主文件  
14         connectionString => mongodb://127.0.0.1:27017, //服务器地址 
15         dbName           => myDatabaseName,//数据库名称  
16         fsyncFlag        => true, //mongodb的确保所有写入到数据库的安全存储到磁盘  
17         safeFlag         => true, //mongodb的等待检索的所有写操作的状态,并检查  
18         useCursor        => false, //设置为true,将启用游标  
19       ),  
20     ),  

这样就配置好了,当然,请确保你的mongodb安装在本地,并且端口号是27107上面的配置才能连接得上。

下面测试一下Model:

将以下代码放至/protected/models/User.php里

 1 class User extends EMongoDocument
 2     {
 3       public $login;
 4       public $name;
 5       public $pass;
 6  
 7       // This has to be defined in every model, this is same as with standard Yii ActiveRecord
 8       public static function model($className=__CLASS__)
 9       {
10         return parent::model($className);
11       }
12  
13       // This method is required!
14       public function getCollectionName()
15       {
16         return ‘users‘;
17       }
18  
19       public function rules()
20       {
21         return array(
22           array(‘login, pass‘, ‘required‘),
23           array(‘login, pass‘, ‘length‘, ‘max‘ => 20),
24           array(‘name‘, ‘length‘, ‘max‘ => 255),
25         );
26       }
27  
28       public function attributeLabels()
29       {
30         return array(
31           ‘login‘  => ‘User Login‘,
32           ‘name‘   => ‘Full name‘,
33           ‘pass‘   => ‘Password‘,
34         );
35       }
36     }

在控制器里测试一下

$users = User::model()->findAll();
var_dump($users);

 

如果没有报错,那说明可以正常使用了。