是否有可能在lumen框架中包含mongodb连接设置.从我看到的配置/数据库.php在lumen包中内部加载.有没有办法扩展它以包含mongodb连接设置?

推荐答案

我们实际上在一个大型项目中使用了Lumen、Laravel、Mongo和MySQL,所以我可以帮助您完成这个项目.假设您希望将MongoDB与Elount一起使用,而不是与原始MongoClient一起使用.你可以在jenssegers here找到我使用的图书馆.

安装MongoDB扩展

首先,您需要安装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页面以获取相关文档.

如果这个答案对你有帮助,你能把它标记为答案吗?

Laravel相关问答推荐

无法在终端cPanel中打开输入文件:artisan

我如何通过 laravel 在高图中针对不同的时间范围进行烛台数据分组

未定义防护 [api] 的授权驱动程序 [api]

Carbon现在时间错了

Laravel - 如何恢复本地存储符号链接并刷新

用 laravel 表单确认删除?

Laravel whereDoesntHave() - 多个 OR 条件

如何从 Laravel 中的 hasMany() 关系中获取所有结果?

Laravel 5 - Php artisan语法错误

计算laravel中查询返回的行数

中间件中的 Laravel 依赖注入

Laravel 5.2 身份验证不起作用

在 Laravel 的 Homestead 中运行 PHPUnit

使用 Laravel 将两个模型合并到一个分页查询中,并带有Eager加载的关系

Laravel 的 toSql() 方法是否会屏蔽 id? (列值被问号替换)

在 Laravel 4 中使用 HTML 占位符

Laravel 如何从子域 URL 中删除api前缀

日期时间格式无效:1366 字符串值不正确

Laravel 5.2 验证错误未出现在Blade中

phpunit 命令不适用于 Windows 7 上的 laravel 4