在中国,我们可以使用MongoDB来使用Eloqunet

简述

我认为在使用数据库时经常会有使用MongoDB的情况。如果与Laravel或Lumen等一起使用,可以使用Eloquent机制来进行数据的写入和获取,但仅限于RDBMS。所以我想使用一个可以使用MongoDB和Eloquent的库来实现这个目标。然后,我希望将其部署到API服务器上。

环境建设

安装php7

    php7.3、php7.3-mbstring、php-7.3-pdo
yum install --enablerepo=remi,remi-php73 php php-mbstring php-pdo

安装MongoDB

    mongod
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

创建

sudo yum install -y mongodb-org

安装

    • php73-php-pecl-mongo

 

    php.iniに上記を追記

安装Laravel-MongoDB

    • yumでzip、unzip

 

    • composer

 

    composerでlaravel-mongodbを導入

动作流程

通过CapsuleManager进行连接

在阅读Lavave-MongoDB的安装文档时,我将仅使用Capsule manager来运行它。

<?php

require_once './vendor/autoload.php';
use Illuminate\Database\Capsule\Manager as Capsule;

$capsule = new Capsule;

$capsule->addConnection([
    'driver'    => 'mongodb',
    'host'      => 'localhost',
    'port'      => 27017,
    'database'  => 'db',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
]);

// Set the event dispatcher used by Eloquent models... (optional)
use Illuminate\Events\Dispatcher;
use Illuminate\Container\Container;
$capsule->setEventDispatcher(new Dispatcher(new Container));

// Make this Capsule instance available globally via static methods... (optional)
$capsule->setAsGlobal();

// Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher())
$capsule->bootEloquent();

$capsule->getDatabaseManager()->extend('mongodb', function($config, $name)
{
    $config['name'] = $name;

    return new Jenssegers\Mongodb\Connection($config);
});

使用eqloqunet的用户类

<?php
require_once './vendor/autoload.php';

use Jenssegers\Mongodb\Eloquent\Model as Eloquent;

class User extends Eloquent {

    protected $collection = 'users_collection';

}

所以,用它们进行写入操作。

<?php

require_once 'db-if.php';
require_once 'user.php';

$user = new User;
$user->name = 'John';
$user->save();

Model definition and sample code is exactly the same as the tutorial, but this should allow writing. Let’s give it a try.


# mongo
> show dbs;
admin   0.000GB
config  0.000GB
db      0.000GB
local   0.000GB
> use db;
switched to db db
> show collections;
users_collection
> db.users_collection.find();
{ "_id" : ObjectId("5ccde0599dc6d668860b1292"), "name" : "John", "updated_at" : ISODate("2019-05-04T18:56:25Z"), "created_at" : ISODate("2019-05-04T18:56:25Z") }

做得很好。
接下来,我们将从PHP中获取数据。

<?php

require_once 'mongoif.php';
require_once 'user.php';

$users = User::all();
foreach($users as $user) {
    var_dump($user->name);
}

让我们执行吧。


# php read-test.php
string(4) "John"

我已顺利获得了。

我认为如果能够使用Eloquent来处理NoSQL数据库mongodb,创建API服务器会变得更加轻松。

广告
将在 10 秒后关闭
bannerAds