2017-07-12 130 views
0

我試圖找出https://github.com/yiisoft/yii2-mongodb上有什麼問題,但有人讓我知道文檔和官方聊天的鏈接。沒有任何答案如何連接到羣集。請幫我解決這個問題,我嘗試了很多,並花了最後2天解決它,但不明白爲什麼它不連接。Yii2無法連接到MongoDB集羣

我嘗試在我的項目配置yii2-MongoDB的,安裝使用它的作曲家,再加入

在配置/ web.php

'mongodb' => [ 
    'class' => '\yii\mongodb\Connection', 
    'dsn' => 'mongodb://user:[email protected]:27017,insta1-shard-00-01-s0vxe.mongodb.net:27017,insta1-shard-00-02-s0vxe.mongodb.net:27017/database?ssl=true&replicaSet=Insta1-shard-0&authSource=admin', 
] 

,並使用此模型:

<?php 

namespace app\models; 

use Yii; 
use yii\base\Model; 
use yii\mongodb\Query; 

/** 
* BlogContent is the model behind the contact form. 
*/ 
class BlogContent extends Model 
{ 

    public function getPostList($page) { 
     $query = new Query(); 
     // compose the query 
     $rows = $query->select(['name', 'price', 'title']) 
      ->from('services')->all(); 
    } 

} 

它應該返回集合中的所有文檔,但它返回給我這個堆棧:

yii\base\UnknownMethodException: Calling unknown method: yii\mongodb\QueryBuilder::build() in /var/www/service/vendor/yiisoft/yii2/base/Object.php:220 
Stack trace: 
#0 /var/www/service/vendor/yiisoft/yii2/db/Query.php(126): yii\base\Object->__call('build', Array) 
#1 /var/www/service/vendor/yiisoft/yii2/db/Query.php(213): yii\db\Query->createCommand(Object(yii\mongodb\Connection)) 
#2 /var/www/service/models/BlogContent.php(21): yii\db\Query->all() 
#3 /var/www/service/controllers/BlogController.php(35): app\models\BlogContent->getPostList(1) 
#4 [internal function]: app\controllers\BlogController->actionIndex(1) 
#5 /var/www/service/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array) 
#6 /var/www/service/vendor/yiisoft/yii2/base/Controller.php(156): yii\base\InlineAction->runWithParams(Array) 
#7 /var/www/service/vendor/yiisoft/yii2/base/Module.php(523): yii\base\Controller->runAction('index', Array) 
#8 /var/www/service/vendor/yiisoft/yii2/web/Application.php(102): yii\base\Module->runAction('blog/index', Array) 
#9 /var/www/service/vendor/yiisoft/yii2/base/Application.php(380): yii\web\Application->handleRequest(Object(yii\web\Request)) 
#10 /var/www/service/web/index.php(12): yii\base\Application->run() 
#11 {main} 

附加信息:

Yii version | 〜2.0.5

Yii MongoDB version | 〜2.1.0

MongoDB server version | MongoDB地圖集

PHP version | 7.0

操作系統| Ubuntu 16.04

我通過傳遞$ db連接作爲可選參數進行查詢來解決第一個問題,但它無法連接。另外,我在本地機器上測試MongoDB的連接 - 對於單個數據庫,它按需要工作。

+0

你可以嘗試使用 '用警予\ MongoDB的\查詢作爲MongoQuery;' 然後在方法: '$查詢=新MongoQuery();' 因爲它看起來像你打的是不對的查詢類。 –

+0

不,我使用正確的課程。我解決了這個問題,會在下面發表評論。 – Alex

回答

0

這個問題是因爲我的php-mongodb與php7有衝突,在我更新之後,所有的都開始按需要工作。