是否有可能将mongodb连接设置包含在流明框架中。从我看到的内容中,config / database.php在内部包中加载。有没有办法以某种方式扩展它以包括mongodb连接设置?
答案 0 :(得分:29)
我们实际上在一个巨大的项目中使用了Lumen,Laravel,Mongo和MySQL,所以我可以帮助你完成这个。假设您希望使用具有eloquent的MongoDB而不是原始的MongoClient。你可以在jenssegers here找到我使用的图书馆。
首先,您需要安装PHP的依赖项以与mongo进行交互。有关安装mongo扩展的详细信息,请参见PHP documentation。
之后,您必须编辑平台的php.ini文件(apache / cli / nginx)以加载扩展。我在模块设置
之前添加了以下内容extension=mongo.so
不用说,您需要在更改配置后重新启动apache / nginx。
在根管腔文件夹中,您可以使用以下命令将其添加到您的要求中。
composer require jenssegers/mongodb
从那里开始,你需要在 Facade或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配置。
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页面上的文档。
如果这个答案对您有帮助,您可以将其标记为答案吗?
答案 1 :(得分:9)
Doctrine MongoDB ODM现在有一个简单的Lumen PHP framework 提供商。
composer require nordsoftware/lumen-doctrine-mongodb-odm
警告强>
jenssegers/mongodb
是位于Illumante's Eloquent ORM之上的驱动程序。
想一想:Eloquent ORM是主要用于SQL 。让我们一起追逐:包装是车轮的重新发明 - 作为副作用,不支持主要mongodb功能。除此之外,包装不稳定且不受维护。
请注意,jenssegers/mongodb
会发泄你的愤怒和沮丧:
答案 2 :(得分:-1)
只需对@Sieabah用户进行更改:
改为:extension=mongo.so
选择:extension=mongodb.so