当前位置: 首页 > article >正文

在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
      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 安装:

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 数据库连接信息:

        '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 服务提供者:

'providers' => [
    // ...
    Jenssegers\Mongodb\MongodbServiceProvider::class,
],

5. 使用 MongoDB

查询构造器

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

php artisan make:controller UserController

在控制器中使用 MongoDB:

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 类别名:

'Moloquent' => 'Jenssegers\Mongodb\Eloquent\Model',

创建一个模型 User.php

php artisan make:model User

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

<?php
namespace App;

use Moloquent;

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

在控制器中使用模型:

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


http://www.kler.cn/a/392002.html

相关文章:

  • MyBatisPlus 用法详解
  • gdb编译教程(支持linux下X86和ARM架构)
  • 深度学习——权重初始化、评估指标、梯度消失和梯度爆炸
  • 5G时代的关键元件:射频微波MLCCs市场前景广阔
  • 【Mode Management】AUTOSAR架构下唤醒源检测函数EcuM_CheckWakeup详解
  • 大数据技术在金融风控中的应用
  • 2024年第四届数字化社会与智能系统国际学术会议(DSInS 2024)
  • 百度世界2024:AI应用的浪潮时刻
  • 机器情绪及抑郁症算法
  • 【零基础学习CAPL】——XML工程创建与使用详解
  • springboot 之 整合springdoc2.6 (swagger 3)
  • 企望制造ERP系统 drawGrid.action SQL注入致RCE漏洞复现
  • 魅力标签云,奇幻词云图 —— 数据可视化新境界
  • css基础:底部固定,导航栏浮动在顶部
  • UI自动化测试|CSS元素定位实践
  • 前端web
  • 【学习】【HTML】localStorage、sessionStorage、cookie
  • javaCV流媒体处理demo
  • 电子版产品册代替纸质版产品册,节能环保!
  • 2.初始sui move
  • 直方图均衡化及Matlab实现
  • 解决表格出现滚动条样式错乱问题
  • AI电商的创新应用
  • Kafka-Controller选举
  • Error creating bean with name ‘reactiveElasticsearchClient
  • 力扣 LeetCode 206. 反转链表(Day2:链表)