私たちは実際に1つの巨大なプロジェクトでLumen、Laravel、Mongo、MySQLを使用しているので、このプロジェクトを支援することができます。生のMongoClientではなくeloquentでMongoDBを使用したいとします。私が使用しているライブラリは、jenssegers こちら から見つけることができます。 。
MongoDB拡張機能をインストールする
まず、PHPがmongoと対話するための依存関係をインストールする必要があります。 mongo拡張機能のインストールの詳細は、PHPドキュメント に記載されています。 。
その後、拡張機能をロードするために、プラットフォーム(apache / cli / nginx)のphp.iniファイルを編集する必要があります。 モジュール設定の前に以下を追加しました
extension=mongo.so
言うまでもなく、構成を変更した後、apache/nginxを再起動する必要があります。
ルーメンの設定
ルートルーメンフォルダで、次のコマンドを使用して要件に追加できます。
composer require jenssegers/mongodb
そこから、前にMongodbServiceProviderもロードする必要があります FacadesまたはEloquentが初期化されます。
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class);
$app->withFacades();
$app->withEloquent();
構成の整理を簡単にするために、構成フォルダーとdatabase.php構成ファイルも作成しました。 Lumenはこのディレクトリを自動ロードまたは検索しようとしないため、この構成をロードするように指示する必要があります。アプリケーションルートをロードする直前に次の行を配置しました。
$app->configure('database');
database.phpでは、mongodbドライバーには特定の構造が必要です。両方を使用しているので、ここにmysqlを含めましたが、mongoのみを使用している場合は、デフォルトをmongodbに変更して、mysql構成を削除できます。
return [
'default' => 'mysql',
'connections' => [
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', ''),
'username' => env('DB_USERNAME', ''),
'password' => env('DB_PASSWORD', ''),
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
],
'mongodb' => array(
'driver' => 'mongodb',
'host' => env('MONGODB_HOST', 'localhost'),
'port' => env('MONGODB_PORT', 27017),
'username' => env('MONGODB_USERNAME', ''),
'password' => env('MONGODB_PASSWORD', ''),
'database' => env('MONGODB_DATABASE', ''),
'options' => array(
'db' => env('MONGODB_AUTHDATABASE', '') //Sets the auth DB
)
),
],
];
構成が邪魔にならないようにすると、モデルを作成できるようになります。これを記述してmongoのモデルを作成する時点で(githubページを確認してください)、以下をベースとして使用できます。 mongoがデフォルトのドライバーである場合は、$connection変数を無視できます。
<?php
namespace App;
use Jenssegers\Mongodb\Model as Eloquent;
class Example extends Eloquent
{
protected $connection = 'mongodb';
protected $collection = 'example';
protected $primaryKey = '_id';
}
これで、mongoと正常に対話できるようになります。ドライバーの詳細については、githubページでドキュメントを確認してください。
この回答が役に立った場合は、回答としてマークを付けることができますか?