在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.rhkb.cn/news/466633.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPU 环境搭建指南:如何在裸机、Docker、K8s 等环境中使用 GPU

本文主要分享在不同环境&#xff0c;例如裸机、Docker 和 Kubernetes 等环境中如何使用 GPU。 跳转阅读原文&#xff1a;GPU 环境搭建指南&#xff1a;如何在裸机、Docker、K8s 等环境中使用 GPU 1. 概述 仅以比较常见的 NVIDIA GPU 举例&#xff0c;系统为 Linux&#xff0c;…

Axure设计之左右滚动组件教程(动态面板)

很多项目产品设计经常会遇到左右滚动的导航、图片展示、内容区域等&#xff0c;接下来我们用Axure来实现一下左右滚动的菜单导航。通过案例我们可以举一反三进行其他方式的滚动组件设计&#xff0c;如常见的上下滚动、翻页滚动等等。 一、效果展示&#xff1a; 1、点击“向左箭…

每天五分钟深度学习框架pytorch:如何加载手写字体数据集mnist?

本文重点 那个这节课程之后,我们就将通过代码的方式来搭建CNN和RNN模型,然后训练,我们使用的数据集为pytorch中已经封装好的数据集,比如mnist,cafir10,本文我们学习一下如何在pytorch中使用它们,然后为之后的章节做准备,现在我们拿mnist来举例。 mnist和cafir10 MIN…

itextpdf打印A5的问题

使用A5打印的时候&#xff0c;再生成pdf是没有问题的。下面做了一个测试&#xff0c;在打印机中&#xff0c;使用A5的纸张横向放入&#xff0c;因为是家用打印机&#xff0c;A5与A4是同一个口&#xff0c;因此只能这么放。 使用itextpdf生成pdf&#xff0c;在浏览器中预览pdf是…

AJAX 全面教程:从基础到高级

AJAX 全面教程&#xff1a;从基础到高级 目录 什么是 AJAXAJAX 的工作原理AJAX 的主要对象AJAX 的基本用法AJAX 与 JSONAJAX 的高级用法AJAX 的错误处理AJAX 的性能优化AJAX 的安全性AJAX 的应用场景总结与展望 什么是 AJAX AJAX&#xff08;Asynchronous JavaScript and XML…

CKA认证 | Day1 k8s核心概念与集群搭建

第一章 Kubernetes 核心概念 1、主流的容器集群管理系统 容器编排系统&#xff1a; KubernetesSwarmMesos Marathon 2、Kubernetes介绍 Kubernetes是Google在2014年开源的一个容器集群管理系统&#xff0c;Kubernetes简称K8s。 Kubernetes用于容器化应用程序的部署&#x…

web实操1——只使用tomcat发布网站

安装tomcat 下载 肯定是去官网&#xff1a; http://tomcat.apache.org/ 下载之后&#xff0c;解压&#xff1a; &#xff01;&#xff01;解压后&#xff1a; logs日志&#xff1a;就是一些输出&#xff0c;输到文本里。 temp:一些临时文件(不用管) webapps:放网站的 work&…

数据结构:七种排序及总结

文章目录 排序一插入排序1直接插入排序2希尔排序二选择排序3直接选择排序4堆排序三 交换排序5冒泡排序6快速排序四 归并排序7归并排序源码 排序 我们数据结构常见的排序有四大种&#xff0c;四大种又分为七小种&#xff0c;如图所示 排序&#xff1a;所谓排序&#xff0c;就是…

A day a tweet(sixteen)——The better way of search of ChatGPT

Introducing ChatGPT search a/ad.及时的/及时地 ChatGPT can now search the web in a much better way than before so you get fast, timely a.有关的(relative n.亲戚,亲属;同类事物 a.比较的&#xff1b;相对的) answers with link…

HTMLCSS:呈现的3D树之美

效果演示 这段代码通过HTML和CSS创建了一个具有3D效果的树的图形&#xff0c;包括分支、树干和阴影&#xff0c;通过自定义属性和复杂的变换实现了较为逼真的立体效果。 HTML <div class"container"><div class"tree"><div class"…

系统规划与管理师——第十二章 职业素养与法侓法规

目录 职业素养 职业道德 行为规范 职业责任 对客户和公众的责任 法律法规 法律概念 法律体系 诉讼时效 民事诉讼时效 刑事追诉时效 常用的法律法规 合同法 招投标法 著作权法 政府采购法 劳动法 知识产权法 刑法修正案&#xff08;七) IT服务的广泛应用不仅…

HAL库硬件IIC驱动气压传感器BMP180

环境 1、keilMDK 5.38 2、STM32CUBEMX 初始配置 默认即可。 程序 1、头文件 #ifndef __BMP_180_H #define __BMP_180_H#include "main.h"typedef struct {float fTemp; /*温度&#xff0c;摄氏度*/float fPressure; /*压力&#xff0c;pa*/float fAltitude; /*…

沈阳乐晟睿浩科技有限公司抖音小店展望未来

在当今数字化浪潮汹涌的时代&#xff0c;电子商务以其独特的魅力和无限潜力&#xff0c;正深刻改变着人们的消费习惯与商业模式。抖音小店作为短视频与电商深度融合的产物&#xff0c;凭借其庞大的用户基础、精准的内容推送机制以及独特的购物体验&#xff0c;迅速崛起为电商领…

【论文复现】自动化细胞核分割与特征分析

本文所涉及所有资源均在这里可获取。 作者主页&#xff1a; 七七的个人主页 文章收录专栏&#xff1a; 论文复现 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01;&#x1f496;&#x1f496; 自动化细胞核分割与特征分析 引言效果展示HoverNet概述HoverNet原理分析整…

ESP32 gptimer通用定时器初始化报错:assert failed: timer_ll_set_clock_prescale

背景&#xff1a;IDF版本V5.1.2 &#xff0c;配置ESP32 通用定时器&#xff0c;实现100HZ&#xff0c;占空比50% 的PWM波形。 根据乐鑫官方的IDF指导文档设置内部计数器的分辨率&#xff0c;计数器每滴答一次相当于 1 / resolution_hz 秒。 &#xff08;ESP-IDF编程指导文档&a…

Jest项目实战(4):将工具库顺利迁移到GitHub的完整指南

开源代码&#xff1a;将工具库迁移到GitHub 随着项目的成熟和完善&#xff0c;将其开源不仅可以获得更多的用户和贡献者&#xff0c;还能促进项目本身的发展。GitHub作为全球最大的开源协作平台&#xff0c;自然成为了大多数开发者的首选。本文将引导您完成将工具库迁移至GitH…

C#线程池

目录 前言 线程 线程池 线程池的工作原理 重要方法 C#线程池总结 前言 线程池是一种多线程处理形式&#xff0c;它允许开发者将任务添加到队列中&#xff0c;然后线程池会自动管理线程的创建、分配和回收&#xff0c;以执行这些任务。线程池中的线程都是后台线程&#xf…

SpringBoot项目集成ONLYOFFICE

ONLYOFFICE 文档8.2版本已发布&#xff1a;PDF 协作编辑、改进界面、性能优化、表格中的 RTL 支持等更新 文章目录 前言ONLYOFFICE 产品简介功能与特点Spring Boot 项目中集成 OnlyOffice1. 环境准备2. 部署OnlyOffice Document Server3. 配置Spring Boot项目4. 实现文档编辑功…

用示例来看C2Rust工具的使用和功能介绍

C2Rust可以将C语言的源代码转换成Rust语言的源代码。下面是一个简单的C语言代码示例&#xff0c;以及使用c2Rust工具将其转换为Rust安全代码的过程。 C语言源代码示例 // example.c #include <stdio.h>int add(int a, int b) {return a b; }int main() {int result a…

【IC验证】systemverilog的设计特性

systemverilog的设计特性 一.概述二.面向硬件的过程语句块1.说明2.always_comb2.always_latch3.always_ff 三.关系运算符1.说明2.例子 四.inside判定符1.说明2.例子 五.条件分支语句&#xff08;1&#xff09;说明&#xff08;2&#xff09;例子&#xff08;case和unique case的…