让我们用 Laravel 连接和展示 MongoDB!
让我们从 Laravel 操作和显示 MongoDB! 好在用 PHP 和 Laravel 准备了功能丰富的驱动,所以实现起来超级简单!我们开始做吧。 样品项目 这次我也会像往常一样分发示例项目。 将.env.example文件重命名为.env,输入您的 Mongo 凭据,并将其与php artisan serve一起使用! 示例代码库 但是请阅读全文并理解它是如何工作的,即使你只是“心情不好”.
让我们从 Laravel 操作和显示 MongoDB!
好在用 PHP 和 Laravel 准备了功能丰富的驱动,所以实现起来超级简单!我们开始做吧。
样品项目
这次我也会像往常一样分发示例项目。
将.env.example
文件重命名为.env
,输入您的 Mongo 凭据,并将其与php artisan serve
一起使用!
示例代码库
但是请阅读全文并理解它是如何工作的,即使你只是“心情不好”......
开发环境
Laravel 是一个活跃的项目,规格可能会因版本而异!
在本文中,我将使用我常用的 Laravel 6.x LTS 系列。
OS -> Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0-74-generic x86_64)
Laravel -> Laravel Framework 6.20.32
PHP -> PHP 7.4.3 (cli) (built: Jul 5 2021 15:13:35) ( NTS )
MongoDB -> 4.4.6
进入全屏模式 退出全屏模式
环境设置
首先,通过 Composer 创建 Laravel 项目。
composer create-project laravel/laravel mongodb-sample "6.*"
进入全屏模式 退出全屏模式
使 MongoDB 可用
使用 Pecl 为 PHP 安装 MongoDB 驱动程序。
(Pecl 在安装时随 PHP 一起提供。)
pecl install mongodb
进入全屏模式 退出全屏模式
并通过 Composer 引入了一个库,允许在 Laravel 项目中使用查询构建器等。
Composer require jenssegers/mongodb
进入全屏模式 退出全屏模式
[笔记]
要包含哪个包版本取决于您的 Laravel 版本!
你可以在下面的 GitHub 上找到它。 对于 Laravel 6.x 系列,请使用 3.6.x!
官方文档
[](https://res.cloudinary.com/practicaldev/image/fetch/s--Gn53MpTp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/a19khlzr7pk88jtcmxwa.png)
制作样本数据库
作为初步步骤,我们将创建一个样本集合。
直接在 mongo shell 中输入以下内容,将创建一个名为 Post 的集合。
use <DB Name>
db.post.insertOne({"body": "Orange","date": "2021-08-19"});
db.post.insertOne({"body": "Grape","date": "2021-08-22"});
db.post.insertOne({"body": "Apple","date": "2021-08-17"});
进入全屏模式 退出全屏模式
※使用 MongoDB Compass(图形用户界面的 CRUD 软件)时,只需读取以下 JSON 即可创建。
JSON 文件
用 Laravel 实现!
编辑配置
编辑/添加到 Config 目录中的以下内容。
/config/app.php(编辑)
<?php
// ~Omitted~
'providers' => [
// Add the following to End.
Jenssegers\Mongodb\MongodbServiceProvider::class,
// ~Omitted~
'aliases' => [
// Add the following to End.
'Moloquent' => Jenssegers\Mongodb\Eloquent\Model::class,
进入全屏模式 退出全屏模式
/config/database.php(编辑)
<?php
// 'default' => env('DB_CONNECTION', 'mysql'),
'default' => env('DB_CONNECTION', 'mongodb'),
'connections' => [
// Added immediately after.
'mongodb' => [
'driver' => 'mongodb',
'host' => env('DB_HOST'),
'port' => env('DB_PORT'),
'database' => env('DB_DATABASE'),
// If you have login restrictions, you also need the following.
'username' => env('DB_USERNAME'),
'password' => env('DB_PASSWORD'),
],
进入全屏模式 退出全屏模式
.env
中的凭证
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=xxxx
DB_USERNAME=xxxx
DB_PASSWORD=secret
# Delete the above and replace with the below, and enter the information as appropriate.
DB_CONNECTION=mongodb
DB_HOST=127.0.0.1
DB_PORT=27017
DB_DATABASE=xxxx
进入全屏模式 退出全屏模式
制造型号
接下来,我们将创建模型,在 MVC 中为“M”。
这很方便,因为我们可以为每个集合单独使用它们!
php artisan make:model Models/Post
进入全屏模式 退出全屏模式
这将在/app/Models
中自动创建一个模型,因此请复制并粘贴以下所有内容并替换它。
/app/Models/Post.php(新)
<?php
namespace App\Models;
use Jenssegers\Mongodb\Eloquent\Model as Moloquent;
class Post extends Moloquent
{
protected $collection = 'post';
}
进入全屏模式 退出全屏模式
创建路由
routes/web.php(编辑)
<?php
Route::get('/', 'TestController@index');
进入全屏模式 退出全屏模式
// ↑ 当你访问/时,它会引用TestController。
创建控制器
嗯,这就是重点。使用以下工匠命令创建控制器。
php artisan make:controller TestController
进入全屏模式 退出全屏模式
然后复制并粘贴以下所有内容。
/app/Http/Controllers/TestController.php(新)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Post;
class TestController extends Controller
{
static function index() {
$posts = Post::orderBy('_id', 'desc')->get();
return view('Test', ['posts' => $posts]);
}
}
进入全屏模式 退出全屏模式
创建视图
最后,创建一个视图,你就完成了!
我使用了 Blade。它是从 Controller 接收变量并将其显示在foreach
中的那个。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>MongoDB Show</title>
</head>
<body>
<div>Data Count:{{ count($posts) }}</div><br>
<!-- You can use the count() function to output the number of data in the collection. -->
<ul>
@foreach ($posts as $post)
<li>{{ 'Date:' . $post['date'] . ' | Value:' . $post['body'] }}</li>
@endforeach
</ul>
</body>
</html>
进入全屏模式 退出全屏模式
就这样!
操作检查
用php artisan serve
启动内置服务器,访问http://localhost:8000/
,如果能看到没有问题,就成功了!
[](https://res.cloudinary.com/practicaldev/image/fetch/s--EDaVTKcz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/tvd361joctnij98buevr.png)
我也会将它发布在 GitHub 上的 repo 上。请试一试。 (GitHub 只推送 laravel diff 目录/文件)
https://github.com/ichii731/php-examples/tree/main/laravel_mongodb-show
如果您喜欢,请查看博客和 Twitter@ichii731:D
更多推荐
所有评论(0)