在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。

相关推荐
朱皮皮呀6 小时前
Spring Cloud——服务注册与服务发现原理与实现
运维·spring cloud·eureka·服务发现·php
花开富贵贼富贵10 小时前
计算机网络技术学习-day4《路由器配置》
网络·智能路由器·php
BingoGo12 小时前
PHP 集成 FFmpeg 处理音视频处理完整指南
后端·php
清风66666613 小时前
基于51单片机自动浇花1602液晶显示设计
单片机·嵌入式硬件·mongodb·毕业设计·51单片机·课程设计
大新屋13 小时前
MongoDB 分片集群修改管理员密码
数据库·mongodb
foundbug99915 小时前
Node.js导入MongoDB具体操作
数据库·mongodb·node.js
大新屋16 小时前
MongoDB 分片集群复制数据库副本
数据库·mongodb
望获linux18 小时前
【实时Linux实战系列】基于实时Linux的物联网系统设计
linux·运维·服务器·chrome·php
fakaifa1 天前
点大餐饮独立版系统源码v1.0.3+uniapp前端+搭建教程
小程序·uni-app·php·源码下载·点大餐饮·扫码点单
anghost1501 天前
基于单片机的智能声控窗帘
单片机·嵌入式硬件·mongodb