laravel 使用 Mongodb

好久没记录点什么了 前俩天刚弄好的 记录下: 顺便记录下我走过的坑!

因为我这边是mac 所以首先我自己的服务安装命令说下;

  brew tap mongodb/brew 

  brew install mongodb-community  当然也可以在后面指定版本

然后 which php 找到 PHP安装路径 进去后直接 sudo pecl install mongodb 安装 ,然后在php.ini中添加“extension=mongodb.so” 我记得安装的时候直接给我加上了好像。没有的话 还是手动添加一下。 因为我的电脑装了俩套环境 中间出了一些问题 不过不重要。

 

laravel中composer安装 :

  这里出现的问题比较多。一是因为我俩套环境 一套集成 一套手动配置的 因为PHP版本的问题导致我这里出现了 php未安装mongodb  依赖 版本号等的问题。当然我这里是因为俩套环境的PHP环境变量的问题。“说下我用的集成环境 MAMP”

 

  但是我想多半出的应该是版本号的问题比如:

 

 

其实这个只需要 指定版本号就好了 这里是我暗黄3.4的 

composer require jenssegers/mongodb 3.4 --ignore-platform-reqs 最终也是安装成功了。

 

 

最后我们来使用它:

首先项目config的databases中新增mongodb的驱动:

  我这里是直接写的 大家可以配置到.env中。

   'mongodb' => [
            'driver' => 'mongodb',
            'host'     => '1.11.1.1',
            'port'     => 1111,
            'database' => env('MONGODB_DB', ''), // 自己数据库名字
            'username' => 'username',
            'password' => 'pwd',
        ],

 



之后 提供俩中处理请求mongodb的方法:
第一种直接使用
$chatRecord = DB::connection("mongodb")->collection('chat_records')->insert(['from_user_id' => 1, 'from_user_type' => 'from', 'to_user_id' => 2,
            'to_user_type' => 'to', 'message' => '$message', 'is_read' => 0]);
  # 使用mongodb 连接 chat_records 集合,相当于mysql的表
$res = DB::connection('mongodb')->collection('chat_records')->get();  # 查询所有

 

第二种:使用 Eloquent:
在app下新建一个文件夹 来创建一个全新的BashModel
use Jenssegers\Mongodb\Eloquent\Model;  # 这里注意一定是mongo的Eloquent\Model
class BaseModel extends Model { 

  protected $connection = 'mongodb';  # 使用的db
}

再创建一个model继承BashModel 主要是访问mogodb的中间层model

class ChatRecord extends BaseModel
{
    protected $guarded = [];
}

  

 

最后创建一个控制器 写好路由的配置后直接访问即可:<?php


namespace App\Http\Controllers\Mongodb;

use App\Http\Controllers\Controller;
use App\MongoEntities\ChatRecord;
use Illuminate\Support\Facades\DB;

class TestController extends Controller
{

    public function add()
    {

        # 新增数据

// $chatRecord = ChatRecord::create(['from_user_id' => 1, 'from_user_type' => 'from', 'to_user_id' => 2, // 'to_user_type' => 'to', 'message' => '$message', 'is_read' => 0]);
$chatRecord = DB::connection("mongodb")->collection('chat_records')->insert(['from_user_id' => 1, 'from_user_type' => 'from', 'to_user_id' => 2, 'to_user_type' => 'to', 'message' => '$message', 'is_read' => 0]); $res = DB::connection('mongodb')->collection('chat_records')->get(); dd($res); } }

 

mongodb视图查询结果:

 

 

 

 

 

这是我的PostMan访问结果:

 

 



posted @ 2021-09-16 10:46  现世中的素人  阅读(693)  评论(0编辑  收藏  举报