有没有可能将mongodb连接设置包含到流明框架中。根据我所看到的,config/database.php是在lumen包内部加载的。有没有办法扩展它,使其包含mongodb连接设置?
发布于 2015-07-25 01:41:28
我们实际上是在一个巨大的项目中使用Lumen,Laravel,Mongo和MySQL,所以我可以帮助你完成这个项目。假设您想使用带有eloquent的MongoDB,而不是原始的MongoClient。您可以从jenssegers here中找到我正在使用的库。
安装MongoDB扩展
首先,您需要安装PHP的依赖项才能与mongo交互。安装mongo扩展的细节可以在PHP documentation上找到。
在此之后,您必须编辑平台(apache/cli/nginx)的php.ini文件来加载扩展。我在模块设置之前添加了以下内容
extension=mongo.so不用说,您需要在更改配置后重新启动apache/nginx。
配置Lumen
在根lumen文件夹中,您可以使用以下命令将其添加到您的需求中。
composer require jenssegers/mongodb在这里,您还需要在初始化MongodbServiceProvider 或Eloquent之前加载 Facades。
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class);
$app->withFacades();
$app->withEloquent();为了简化配置组织,我还创建了一个config文件夹和一个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页面以获取相关文档。
如果这个答案对你有帮助,你能把它标记为答案吗?
发布于 2016-08-10 18:32:30
2016 (更新)
现在,Lumen PHP framework有了一个简单的Doctrine MongoDB ODM Provider。
composer require nordsoftware/lumen-doctrine-mongodb-odm警告
jenssegers/mongodb是一个位于Illumante's Eloquent ORM之上的驱动程序。
想想看:Eloquent ORM是为SQL而生的主版。让我们切入正题:这个包是轮子的再发明--作为一个副作用,主要的mongodb特性不被支持。除此之外,包是不稳定的和未维护的。
注意,jenssegers/mongodb会发泄你的愤怒和挫败感:

发布于 2016-06-30 03:31:35
只需更改@Sieabah user:而不是:extension=mongo.so选择:extension=mongodb.so
https://stackoverflow.com/questions/31547827
复制相似问题