因为公司的需求, 在原先Laravel的框架上需要储存大量的用户操作记录。所以选择了mongodb来进行存储。 相比于SGBDR,laravel自带强大的Eloquent之并不直接支持Nosql。但是网上有很多已经成熟的插件很好的将Nosql集成到Laravel之中。
在Elasticsearch 和 mongodb进行比较之后。我们选择了Mongodb。
Extension是:jenssegers/laravel-mongodb (MongoLid也是一个功能相近的插件用于集成)。
Laravel版本:4.2
系统:ubuntu 14.04
1.mongodb 的安装。
切记不能直接在没有安装过mongodb的机器上直接安装 apt-get install mongodb。
如果安装了 利用 apt-get purge mongodb 来卸载
1.http://phphub.org/topics/309
其中包涵了mongodb 的安装方法 和 mongodb drive的安装方法。
2.Laravel MongoDB的安装方法:
首先确定自己使用的 laravel版本:
Laravel | Package |
---|---|
4.2.x | 2.0.x |
5.0.x | 2.1.x |
5.1.x | 2.2.x or 3.0.x |
5.2.x | 2.3.x or 3.0.x |
因为这里使用的为laravel4.2 所以安装时不能直接使用默认的
composer require jenssegers/mongodb
修改 project_dir/composer.json文件
"require":{
"Laravel/framework":"4.2.*",
...
"jenssegers/mongodb":"~2.0"
},
之后在config/app.php中加入
“Jenssegers\Mongodb\MongodbServiceProvider”
在Model中创建新的User
use Jenssegers\Mongodb\Model as Eloquent;
class User extends Eloquent {}
注意:此处是4.2版本 所以路径为
Jenssegers\Mongodb\Model
如果使用的为5.*版本 则可以直接使用composer命令
composer require jenssegers/mongodb
但目录则是:
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class User extends Eloquent {}
之后在app/config/database中新建数据库
‘mongodb’=>array(
'driver' => 'mongodb',
'host'=> 'localhost'
'database' =>27017
'username'=>
'password'=>
'database'=>
)
之后在工程路径重新加载 composer update 就完成了
遇到的问题 : couldn't find mongoclient
1.保证第一步安装时能正确的现实 mangodb support :enable
其中要确定自己所使用的到底是哪个php.ini
有时候在cli和apache2中都需要修改:extension = mongo.so 此处是mongo.so 不是mongodb.so!!!!
查看apache的php.ini
在工程文件夹下新建 file.php
<?php echo phpinfo(); >
查看cli的php.ini
php -i | grep 'php.ini'
php -i | grep 'mongo'用于查看 mongodb driver是否正确执行。