无法将Yii2连接到mongodb

时间:2018-02-26 13:53:05

标签: php mongodb yii2

我想将我的yii2-advance模板项目连接到MongoDB但是有一个问题。

我已完成指南here,并已将这些设置添加到common/config/main-local.phptest-local.php

<?php
return [
    'components' => [
        'db' => [
            'class' => '\yii\mongodb\Connection',
            'dsn' => 'mongodb://@localhost:27017/medadnoki',
            'options' => [
                "username" => "",
                "password" => ""
            ]
        ],
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'viewPath' => '@common/mail',
            'useFileTransport' => true,
        ],
    ],
];

但是当我使用这段代码时,我得到了错误:

use yii\mongodb\Connection;
...
$connection = new Connection();
        if ($connection->getIsActive()) {
            echo "true";
        }
        else {
            echo "false";
        }

我的代码问题是什么?

UPDATE1:  我已经在yii2-basic中测试了我的代码,并将db.php更改为:

return [
    'class' => '\yii\mongodb\Connection',
    'dsn' => 'mongodb://root:root@localhost:27017/medadnoki'
];

我将以下代码添加到我的控制器中:

if(Yii::$app->db->getIsActive()) {
            echo "true";
        } else {
            echo "false";
        }

但它仍然返回false,有什么想法的解决方案吗? 我应该用手创建与db的连接吗?或者它自动处理连接?

1 个答案:

答案 0 :(得分:0)

我在我的控制器中测试了MongoDB查询,但我收到了身份验证错误。 我为我的数据库设置了用户名和密码,并像这样更改dsn

'dsn' => 'mongodb://username:password@localhost:27017/medadnoki',

然后我在getIsActive()函数中得到了错误的错误,但我的查询工作正常。我认为函数Yii::$app->db->getIsActive()不会检查数据库连接并用于其他目的。