IT源码网

Yii框架中使用mongodb扩展

lxf 2021年02月13日 编程语言 428 0

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

              安装了mongo的php驱动

下载Yii的mongo扩展:
这是YiiMongoDbSuite的1.3.6版本
支持PHP Mongo驱动的版本为1.0.5及以下

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

其它版本下载链接: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);

 

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

 

评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

安装PHP的mongodb驱动速记