是否可以将mongodb连接设置包含到lumen框架中。正如我所看到的,config/database.php是在lumen包中内部加载的。有没有一种方法来扩展它,以包括mongodb连接设置?
r7s23pms1#
我们实际上在一个巨大的项目中使用Lumen,Laravel,Mongo和MySQL,所以我可以帮助你完成这个项目。假设你想使用MongoDB与雄辩的,而不是与原始的MongoClient。你可以从jenssegers here找到我正在使用的库。
首先,你需要安装PHP与mongo交互的依赖项。安装mongo扩展的细节可以在PHP documentation上找到。之后,您必须编辑平台(apache/cli/nginx)的php.ini文件以加载扩展。我在 * 模块设置 * 之前添加了以下内容
extension=mongo.so
当然,在更改配置后,您需要重新启动apache/nginx。
在您的根lumen文件夹中,您可以使用以下命令将其添加到您的需求中。
composer require jenssegers/mongodb
在初始化Facades或Eloquent之前,您还需要从那里加载MongodbServiceProvider。
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class); $app->withFacades(); $app->withEloquent();
为了简化配置的组织,我还创建了一个config文件夹和一个database.php配置文件。由于Lumen不尝试自动加载或搜索此目录,我们必须告诉它加载此配置。我在加载应用程序路由之前放了下面一行。
$app->configure('database');
在database.php中,mongodb驱动程序需要特定的结构。我在这里包含了mysql,因为我两个都使用,但是如果你只使用mongo,你可以将默认值改为mongodb并删除mysql配置。
<?php 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页面以获取相关文档。
gajydyqb2#
现在有一个简单的Doctrine MongoDB ODMProvider用于Lumen PHP framework。
composer require nordsoftware/lumen-doctrine-mongodb-odm
GitHub Source Code
警告
jenssegers/mongodb是位于Illumante's Eloquent ORM之上的驱动程序。想想看:Eloquent ORM是primary made for SQL。我们就开门见山吧该软件包是车轮的重新发明-作为一个副作用,主要的mongodb功能不受支持。除此之外,该软件包是不稳定的和未维护的。注意,jenssegers/mongodb会发泄你的愤怒和沮丧:
jenssegers/mongodb
c3frrgcw3#
只是@Sieabah用户的变化:extension=mongo.so选择:extension=mongodb.so
extension=mongodb.so
3条答案
按热度按时间r7s23pms1#
我们实际上在一个巨大的项目中使用Lumen,Laravel,Mongo和MySQL,所以我可以帮助你完成这个项目。假设你想使用MongoDB与雄辩的,而不是与原始的MongoClient。你可以从jenssegers here找到我正在使用的库。
安装MongoDB扩展
首先,你需要安装PHP与mongo交互的依赖项。安装mongo扩展的细节可以在PHP documentation上找到。
之后,您必须编辑平台(apache/cli/nginx)的php.ini文件以加载扩展。我在 * 模块设置 * 之前添加了以下内容
当然,在更改配置后,您需要重新启动apache/nginx。
配置Lumen
在您的根lumen文件夹中,您可以使用以下命令将其添加到您的需求中。
在初始化Facades或Eloquent之前,您还需要从那里加载MongodbServiceProvider。
为了简化配置的组织,我还创建了一个config文件夹和一个database.php配置文件。由于Lumen不尝试自动加载或搜索此目录,我们必须告诉它加载此配置。我在加载应用程序路由之前放了下面一行。
在database.php中,mongodb驱动程序需要特定的结构。我在这里包含了mysql,因为我两个都使用,但是如果你只使用mongo,你可以将默认值改为mongodb并删除mysql配置。
配置完成后,你现在可以创建一个模型了,在写这篇文章的时候,你可以用下面的代码为mongo创建一个模型(查看github页面)。如果mongo是你的默认驱动,你可以忽略$connection变量。
这样,你就可以正常地与mongo交互了,关于驱动程序的细节,请查看github页面以获取相关文档。
gajydyqb2#
2016(更新)
现在有一个简单的Doctrine MongoDB ODMProvider用于Lumen PHP framework。
GitHub Source Code
警告
jenssegers/mongodb
是位于Illumante's Eloquent ORM之上的驱动程序。想想看:Eloquent ORM是primary made for SQL。我们就开门见山吧该软件包是车轮的重新发明-作为一个副作用,主要的mongodb功能不受支持。除此之外,该软件包是不稳定的和未维护的。
注意,
jenssegers/mongodb
会发泄你的愤怒和沮丧:c3frrgcw3#
只是@Sieabah用户的变化:
extension=mongo.so
选择:extension=mongodb.so