在PHP8内,用Jenssegers MongoDB扩展来实现Laravel与MongoDB的集成

在现代 web 开发中,MongoDB 作为一种流行的 NoSQL 数据库,因其灵活的文档结构和高性能而受到许多开发者的青睐。Laravel,作为一个优雅的 PHP Web 框架,提供了丰富的功能和优雅的代码风格。本文将指导你如何在 Laravel 项目中集成 MongoDB.

在宝塔面板中安装PHP 8以及MongoDB扩展(php-mongodb)的步骤如下:

安装PHP 8

  1. 登录宝塔面板

    • 使用你的账号和密码登录宝塔面板。
  2. 访问软件商店

    • 在宝塔面板的左侧菜单中找到"软件商店"。
  3. 搜索并安装PHP

    • 在软件商店中搜索"PHP",找到PHP 8.x版本。
    • 点击"安装",选择"极速安装"或"自定义安装"。
    • 如果选择自定义安装,确保选择PHP 8.x版本,并根据需要勾选其他组件。
  4. 安装完成后重启服务

    • 安装完成后,宝塔面板会提示你重启服务,点击"立即重启"以应用更改。

安装MongoDB PHP扩展(php-mongodb)

  1. 安装MongoDB
    • 如果还没有安装MongoDB,可以在软件商店中搜索并安装MongoDB。
  2. 安装PHP扩展
    • 在宝塔面板的左侧菜单中找到"软件商店",找到"已安装"的php 8.0.26,然后选择PHP"安装扩展"。
    • 搜索"mongodb",找到"php-mongodb"扩展。
    • 点击"安装",宝塔面板会自动下载并安装该扩展。
  3. 重启PHP服务
    • 安装完成后,需要重启PHP服务以使扩展生效。可以在"软件商店"中的"运行环境"下找到PHP,点击"设置",然后选择"重启"。
  4. 验证安装
    • 重启服务后,可以通过创建一个简单的PHP脚本来验证php-mongodb扩展是否已正确安装和加载。例如,创建一个名为info.php的文件,内容如下:

      php 复制代码
      <?php
      phpinfo();
      ?>
    • 访问这个文件,查找"mongodb"相关的信息,确认扩展已加载。

安装无效的办法

在php8.0,我遇到mongodb扩展挂不上,花了半天时间检查也无效。在php调用时失败。经过长时间的修复,我准备放弃php8.0,安装了php7.2版本。然后使用php -m | grep mongo是有结果的。

我原计划准备将网站切换到php7.2环境,无意中测试在php8.0环境是否有效。竟然发现php8.0运行php - m | grep mongo也有结果了。这是奇遇。

在 Laravel 中加入 MongoDB :

1. 安装 MongoDB PHP 扩展

先检查

php -v

php -m | grep mongo #查看是否成功,不成功就看第**

2. 安装 Laravel MongoDB 包

接下来,你需要在 Laravel 项目中安装 MongoDB 支持。推荐使用的包是 jenssegers/mongodb。通过 Composer 安装:

bash 复制代码
composer require jenssegers/mongodb

3. 配置 Laravel 项目使用 MongoDB

在.env :

MONGODB_DSN=mongodb://esg:passwd@127.0.0.1:27317/esg?authSource=esg

config/database.php 文件中配置 MongoDB 数据库连接信息:

php 复制代码
        'mongodb' => [
            'driver'   => 'mongodb',
//            'host'     => env('MONGODB_HOST', '127.0.0.1'),
//            'port'     => env('MONGODB_POST', '27317'),
//            'database' => env('MONGODB_DB', 'esg'),
//            'username' => env('MONGODB_USER', 'esg'),
//            'password' => env('MONGODB_PASSWORD', ''),
            'dsn' => env('MONGODB_DSN','')  #启用的是dsn,上面的失败
        ]

4. 注册服务提供者

config/app.php 文件中注册 MongoDB 服务提供者:

php 复制代码
'providers' => [
    // ...
    Jenssegers\Mongodb\MongodbServiceProvider::class,
],

5. 使用 MongoDB

查询构造器

你可以使用 Laravel 的查询构造器来操作 MongoDB。例如,创建一个 UserController 控制器:

bash 复制代码
php artisan make:controller UserController

在控制器中使用 MongoDB:

php 复制代码
use DB;

class UserController extends Controller
{
    public function index()
    {
        DB::connection('mongodb')->collection('users')->insert([
            'name' => 'tom',
            'age'  => 18,
        ]);

        $res = DB::connection('mongodb')->collection('users')->all();
        dd($res);
    }
}
Eloquent 模型

config/app.php 中配置 MongoDB 的 Eloquent 类别名:

php 复制代码
'Moloquent' => 'Jenssegers\Mongodb\Eloquent\Model',

创建一个模型 User.php

bash 复制代码
php artisan make:model User

在模型中指定 MongoDB 连接和集合:

php 复制代码
<?php
namespace App;

use Moloquent;

class User extends Moloquent
{
    protected $connection = 'mongodb';
    protected $collection = 'users';
    protected $primaryKey = '_id';
    protected $fillable = ['name', 'age'];
}

在控制器中使用模型:

php 复制代码
<?php
namespace App\Http\Controllers;

use App\User;

class UserController extends Controller
{
    public function index()
    {
        User::create([
            'name' => 'tom',
            'age'  => 18,
        ]);
    }
}

通过上述步骤,你可以在 Laravel 项目中集成 MongoDB,并进行基本的 CRUD 操作。同时,了解如何使用 CDN 加速静态资源的加载,可以进一步提升你的 web 应用性能。希望这篇文章能帮助你在 Laravel 项目中更好地利用 MongoDB 和 CDN。

相关推荐
hbh112233abc4 小时前
实现 think/queue 日志分离
php·thinkphp·queue
安静读书6 小时前
MongoDB 详解:深入理解与探索
数据库·mongodb
黑客K-ing6 小时前
网络安全名词解释
开发语言·网络·安全·网络安全·php
北纬39°的风8 小时前
从0开始搭建一个生产级SpringBoot2.0.X项目(十三)SpringBoot连接MongoDB
spring boot·后端·mongodb
郏国上8 小时前
MongoDB创建联合唯一性约束
javascript·数据库·mongodb
23zhgjx_ywz9 小时前
HCIP快速生成树 RSTP
开发语言·php
文人sec11 小时前
泷羽sec学习打卡-Windows基础virus
windows·学习·安全·web安全·php
2401_8576363912 小时前
工位管理智能化:Spring Boot企业级平台
数据库·spring boot·php
数据小小爬虫13 小时前
PHP爬虫快速获取京东商品详情(代码示例)
开发语言·爬虫·php
来一杯龙舌兰14 小时前
【MongoDB】MongoDB的存储引擎及Wiredtiger的读/写缓存、数据结构设计、Page生命周期等实现原理(超详细)
数据结构·mongodb·缓存·page·读写