流明和 MongoDB?
Lumen and MongoDB?
是否可以通过某种方式将 mongodb 连接设置包含到 lumen 框架中。据我所见,config/database.php 是在 lumen 包内部加载的。有没有办法以某种方式扩展它以包含 mongodb 连接设置?
我们实际上在一个大型项目中使用 Lumen、Laravel、Mongo 和 MySQL,因此我可以帮助您完成这一项目。假设您想将 MongoDB 与 eloquent 一起使用,而不是与原始 MongoClient 一起使用。您可以从 jenssegers here.
找到我正在使用的库
安装Mongo数据库扩展
首先,您需要安装 PHP 的依赖项才能与 mongo 交互。有关安装 mongo 扩展的详细信息,请参阅 PHP documentation.
之后,您必须为平台 (apache/cli/nginx) 编辑 php.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();
为了简化配置,我还创建了一个配置文件夹和一个 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 页面上的文档。
如果这个答案对您有帮助,您可以将其标记为答案吗?
只是 @Sieabah 用户的变化:
相反:extension=mongo.so
选择:extension=mongodb.so
2016(更新)
现在有一个简单的Doctrine MongoDB ODM Provider for the Lumen PHP framework。
composer require nordsoftware/lumen-doctrine-mongodb-odm
警告
jenssegers/mongodb
是 Driver 坐在 Illumante's Eloquent ORM.
之上
想一想:Eloquent ORM is primary made for SQL. And let's cut with the chase: The package is the reinvention of the wheel - as a side effect, major mongodb 功能不受支持。除此之外,该软件包不稳定且无人维护。
请注意,jenssegers/mongodb
会发泄您的愤怒和沮丧:
是否可以通过某种方式将 mongodb 连接设置包含到 lumen 框架中。据我所见,config/database.php 是在 lumen 包内部加载的。有没有办法以某种方式扩展它以包含 mongodb 连接设置?
我们实际上在一个大型项目中使用 Lumen、Laravel、Mongo 和 MySQL,因此我可以帮助您完成这一项目。假设您想将 MongoDB 与 eloquent 一起使用,而不是与原始 MongoClient 一起使用。您可以从 jenssegers here.
找到我正在使用的库安装Mongo数据库扩展
首先,您需要安装 PHP 的依赖项才能与 mongo 交互。有关安装 mongo 扩展的详细信息,请参阅 PHP documentation.
之后,您必须为平台 (apache/cli/nginx) 编辑 php.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();
为了简化配置,我还创建了一个配置文件夹和一个 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 页面上的文档。
如果这个答案对您有帮助,您可以将其标记为答案吗?
只是 @Sieabah 用户的变化:
相反:extension=mongo.so
选择:extension=mongodb.so
2016(更新)
现在有一个简单的Doctrine MongoDB ODM Provider for the Lumen PHP framework。
composer require nordsoftware/lumen-doctrine-mongodb-odm
警告
jenssegers/mongodb
是 Driver 坐在 Illumante's Eloquent ORM.
想一想:Eloquent ORM is primary made for SQL. And let's cut with the chase: The package is the reinvention of the wheel - as a side effect, major mongodb 功能不受支持。除此之外,该软件包不稳定且无人维护。
请注意,jenssegers/mongodb
会发泄您的愤怒和沮丧: