参考:https://laravel-china.org/articles/2560/using-mongodb-in-laravel
1、安装
(1)先安装php7的mongodb扩展
https://blog.csdn.net/weixin_36429334/article/details/73467830
安装好对应版本之后,查看php-info()如下表示安装成功
(2)确定已经安装好php的mongodb的扩展之后
进入项目的根目录,命令行执行
composer require jenssegers/mongodb
(3)在config/app.php下注册服务
扫描二维码关注公众号,回复:
2257853 查看本文章
'providers' 中加入
Jenssegers\Mongodb\MongodbServiceProvider::class,
'aliases' 中加入
'Moloquent' => Jenssegers\Mongodb\Eloquent\Model::class,
'Mongo' => Jenssegers\Mongodb\MongodbServiceProvider::class,
2、配置
在config/database.php中配置数据库
'connections' 中加入
'mongodb' => array( //MongoDB
'driver' => 'mongodb',
'host' => '1xx.1xx.1xx.1x', //数据库服务器的ip
'port' => 27017, //数据库服务器上mongodb服务对应的端口
'database' => 'task_manager', //数据库名称
'username' => 'user',
'password' => 'xxx',
'options' => array(
'database' => 'task_manager' // 要使用的数据库
)
),
3、项目中的具体使用
方法一:
(1)在app下新建一个Mongodb.php
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/6/27 0027
* Time: 上午 11:19
*/
namespace App;
use DB;
class Mongodb
{
public static function connectionMongodb($tables)
{
return $users = DB::connection('mongodb')->collection($tables);
}
}
(2)在controller中使用
增:
$connection = Mongodb::connectionMongodb('xxx表名');
$result= $connection ->insert($data);
删:
$connection = Mongodb::connectionMongodb('xxx表名');
$result= $connection ->where('id', $id)->delete();
改:
$connection = Mongodb::connectionMongodb('xxx表名');
$result= $connection ->where('id',$id)->update($data);
查:
$connection = Mongodb::connectionMongodb('xxx表名');
//不分页
$result= $connection ->get();
如果用了软删除,此处要加上$result=$connection->whereNull('deleted_at')->get();
//分页
可以默认分页数,或者根据传入data的指定页数进行分页
if(isset($data['pageSize'])){
$pageSize = $data['pageSize'];
}else{
$pageSize=6;
}
$results=$connection->paginate($pageSize);
$connection = Mongodb::connectionMongodb('xxx表名');
$result= $connection ->where('id',$id)->get();
方法二:
(1)在要操作的数据表对应的实体类中引用mongodb的Model
<?php
namespace App;
use Emadadly\LaravelUuid\Uuids;
use Jenssegers\Mongodb\Eloquent\Model;
use Jenssegers\Mongodb\Eloquent\SoftDeletes;
class ExampleModel extends Model
{
//
use Uuids;
/**
* Indicates if the IDs are auto-incrementing.
*
* @var bool
*/
public $incrementing = false;
use SoftDeletes;
protected $connection = 'mongodb';
protected $collection = 'xxx表名'; //表名
protected $primaryKey = 'id'; //设置主键
protected $fillable = [ 'id','title', 'type','xx']; //设置字段白名单
/**
* 需要被转换成日期的属性。
*
* @var array
*/
protected $dates = ['deleted_at'];
}
(2)在controller中使用
增
$result=ExampleModel ::create($data);
删
$result= ExampleModel ::where('id', $id)->delete();
改
$result= ExampleModel ::where('id',$id)->update($data);
查
$result= ExampleModel ::all();
$result= ExampleModel ::where('id',$id)->get();