是否有可能在lumen框架中包含mongodb连接设置.从我看到的配置/数据库.php在lumen包中内部加载.有没有办法扩展它以包含mongodb连接设置?
是否有可能在lumen框架中包含mongodb连接设置.从我看到的配置/数据库.php在lumen包中内部加载.有没有办法扩展它以包含mongodb连接设置?
我们实际上在一个大型项目中使用了Lumen、Laravel、Mongo和MySQL,所以我可以帮助您完成这个项目.假设您希望将MongoDB与Elount一起使用,而不是与原始MongoClient一起使用.你可以在jenssegers here找到我使用的图书馆.
首先,您需要安装PHP与mongo交互的依赖项.安装mongo扩展的细节可以在PHP documentation上找到.
之后,你必须编辑php.用于加载扩展的平台(apache/cli/nginx)的ini文件.我在Module Settings之前添加了以下内容
extension=mongo.so
不用说,在更改配置后,您需要重新启动apache/nginx.
在根lumen文件夹中,可以使用以下命令将其添加到需求中.
composer require jenssegers/mongodb
从那里,您还需要加载MongodbServiceProvider before Facades,否则Eloquent将被初始化.
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class);
$app->withFacades();
$app->withEloquent();
为了简化配置的组织,我还创建了一个配置文件夹和一个数据库.php配置文件.由于Lumen不try 自动加载或搜索此目录,我们必须告诉它加载此配置.在加载应用程序路径之前,我把下面的行放在正确的位置.
$app->configure('database');
在数据库中.php mongodb驱动程序需要特定的 struct .我在这里包括了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页面以获取相关文档.
如果这个答案对你有帮助,你能把它标记为答案吗?