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

相关推荐
DK1858383225210 小时前
【源码开源部署】电竞代练护航陪玩小程序:全游戏服务平台完整解决方案(附宝塔部署教程)
游戏·微信小程序·uni-app·开源·php
广州灵眸科技有限公司12 小时前
从手动三步到上电即连:4G模组systemd开机自连方案
linux·运维·服务器·开发语言·网络·人工智能·php
aixingpan12 小时前
aixingpan.cn API开发文档:api_docs_trichart_natal_composite_transit2接口指南
前端·php
妙码生花12 小时前
使用git更新ai-go-admin框架
前端·人工智能·git·golang·typescript·php
PHP实战开发录13 小时前
PHP文件上传成功为什么页面却找不到
开发语言·nginx·php·开发
qq_4523962313 小时前
第十篇:《eBPF 可观测性:零侵扰的深度内核追踪》
服务器·网络·php
AC赳赳老秦14 小时前
文旅市场公开数据分析:基于 OpenClaw 采集景区客流与门票公示数据,生成区域文旅热度监测报告
java·c语言·python·php·symfony·deepseek·openclaw
SDWAN_Cheap15 小时前
SD-WAN智能选路技术的算法与实现机制
算法·php·sdwan
xiancai_xianyu17 小时前
想把数据模型一次建完美再上AI?会一直卡在建模里
开发语言·人工智能·php·数据模型·语义层·本体建模·企业知识网络
AC赳赳老秦18 小时前
环保监测公开数据应用:OpenClaw 抓取空气与水质公开监测数据,开展区域环境质量趋势分析
大数据·数据库·人工智能·python·php·deepseek·openclaw