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

相关推荐
Smile灬凉城6667 小时前
robots协议
安全·php·robots
数据小爬虫@8 小时前
如何利用PHP爬虫获取速卖通(AliExpress)商品评论
开发语言·爬虫·php
CC呢8 小时前
基于单片机的智能婴儿床监护系统多功能婴儿床摇篮系统
数据库·mongodb
fendouweiqian8 小时前
查看php已安装扩展命令
php
柒烨带你飞9 小时前
路由器的原理
网络·智能路由器·php
vvw&11 小时前
如何在 Ubuntu 22.04 上安装和使用 Composer
linux·运维·服务器·前端·ubuntu·php·composer
hking11112 小时前
upload-labs关卡记录5
web安全·php
2401_8576176214 小时前
“无缝购物体验”:跨平台网上购物商城的设计与实现
java·开发语言·前端·安全·架构·php
2401_8574396914 小时前
智慧社区电商系统:提升用户体验的界面设计
前端·javascript·php·ux
我是高手高手高高手14 小时前
ThinkPHP8多应用配置及不同域名访问不同应用的配置
linux·服务器·前端·php