Laravel中使用mongodb(安装及项目内使用)

参考: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();​​​​​​​

猜你喜欢

转载自blog.csdn.net/weixin_38682852/article/details/80840678
今日推荐