在中国,我们可以使用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服务器会变得更加轻松。