首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lumen和MongoDB?

Lumen和MongoDB?
EN

Stack Overflow用户
提问于 2015-07-22 03:22:02
回答 3查看 13.1K关注 0票数 15

有没有可能将mongodb连接设置包含到流明框架中。根据我所看到的,config/database.php是在lumen包内部加载的。有没有办法扩展它,使其包含mongodb连接设置?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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文件来加载扩展。我在模块设置之前添加了以下内容

代码语言:javascript
复制
extension=mongo.so

不用说,您需要在更改配置后重新启动apache/nginx。

配置Lumen

在根lumen文件夹中,您可以使用以下命令将其添加到您的需求中。

代码语言:javascript
复制
composer require jenssegers/mongodb

在这里,您还需要在初始化MongodbServiceProvider 或Eloquent之前加载 Facades。

代码语言:javascript
复制
$app->register(Jenssegers\Mongodb\MongodbServiceProvider::class);

$app->withFacades();

$app->withEloquent();

为了简化配置组织,我还创建了一个config文件夹和一个database.php配置文件。由于Lumen不会尝试自动加载或搜索此目录,因此我们必须告诉它加载此配置。我将以下行放在加载应用程序路由之前。

代码语言:javascript
复制
$app->configure('database');

在database.php中,mongodb驱动程序需要特定的结构。我在这里包含了mysql,因为我同时使用两者,但是如果你只使用mongo,你可以将默认设置改为mongodb,并删除mysql配置。

代码语言:javascript
复制
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变量。

代码语言:javascript
复制
<?php

namespace App;

use Jenssegers\Mongodb\Model as Eloquent;

class Example extends Eloquent 
{
    protected $connection = 'mongodb';
    protected $collection = 'example';
    protected $primaryKey = '_id';
}

现在,您应该能够正常地与mongo进行交互,有关驱动程序的详细信息,请查看github页面以获取相关文档。

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

票数 32
EN

Stack Overflow用户

发布于 2016-08-10 18:32:30

2016 (更新)

现在,Lumen PHP framework有了一个简单的Doctrine MongoDB ODM Provider

代码语言:javascript
复制
composer require nordsoftware/lumen-doctrine-mongodb-odm

GitHub Source Code

警告

jenssegers/mongodb是一个位于Illumante's Eloquent ORM之上的驱动程序

想想看:Eloquent ORM是为SQL而生的主版。让我们切入正题:这个包是轮子的再发明--作为一个副作用,主要的mongodb特性不被支持。除此之外,包是不稳定的和未维护的。

注意,jenssegers/mongodb会发泄你的愤怒和挫败感:

票数 9
EN

Stack Overflow用户

发布于 2016-06-30 03:31:35

只需更改@Sieabah user:而不是:extension=mongo.so选择:extension=mongodb.so

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31547827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档