どういうわけか、mongodb接続設定をLumenフレームワークに含めることは可能ですか?私が見たように、config /database.phpはLumenパッケージの内部にロードされています。なんとかしてmongodb接続設定を含めるように拡張する方法はありますか?
私たちは実際に1つの巨大なプロジェクトでLumen、Laravel、Mongo、MySQLを使用しているので、このプロジェクトを支援することができます。生のMongoClientではなく雄弁なMongoDBを使用したいとします。私が使用しているライブラリは、jenssegers here から見つけることができます。
まず、mongoと対話するためにPHPの依存関係をインストールする必要があります。mongo拡張機能のインストールの詳細は PHPドキュメント にあります。
その後、拡張機能をロードするために、プラットフォーム(Apache/cli/nginx)のphp.iniファイルを編集する必要があります。前に以下を追加しましたモジュール設定
extension=mongo.so
言うまでもなく、設定を変更した後、Apache/nginxを再起動する必要があります。
ルートLumenフォルダーで、次のコマンドを使用して要件に追加できます。
composer require jenssegers/mongodb
そこから、MongodbServiceProviderをロードしてからファサードまたは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ページでドキュメントを確認してください。
この回答が役に立った場合は、回答としてマークできますか?
Doctrine MongoDB ODMProviderfor Lumen PHP =フレームワーク 。
composer require nordsoftware/Lumen-doctrine-mongodb-odm
警告
jenssegers/mongodb
はDriverで、 Illumante's Eloquent ORM の上に座っています。
考えてみてください: Eloquent ORM isprimary made for SQL。そして、追いかけてみましょう:パッケージはホイールの再発明です-副作用として、主要な mongodb 機能はサポートされていません。その上、パッケージは不安定でメンテナンスされていません。
注意してください、jenssegers/mongodb
あなたの怒りと欲求不満を発散します: