2017-07-12 9 views
0

Ich versuche herauszufinden, was an https://github.com/yiisoft/yii2-mongodb falsch ist, aber jemand hält nur den Link zu den Dokumenten und dem offiziellen Chat. Es gibt keine Antwort wie man sich mit dem Cluster verbindet. Bitte helfen Sie mir, dieses Problem zu lösen, ich versuche viel und verbrachte die letzten 2 Tage damit, es zu lösen, kann aber nicht verstehen, warum es nicht verbindet.Yii2 Ich kann keine Verbindung mit dem MongoDB-Cluster herstellen

Ich versuche yii2-mongodb auf mein Projekt zu konfigurieren, installiert es Komponisten verwenden, fügen Sie dann

in config/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', 
] 

und dieses Modell verwenden:

<?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(); 
    } 

} 

sollte es mir alle Dokumente aus der Sammlung zurückgeben, aber es kommt mir dieser Stapel zurück:

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} 

Zusätzliche Informationen:

Yii Version | ~ 2.0.5

Yii MongoDB Version | ~ 2.1.0

MongoDB Serverversion | MongoDB Atlas

PHP-Version | 7.0

Betriebssystem | Ubuntu 16.04

ich dieses erste Problem lösen, indem eine $ db Verbindung vorbei als optionales Argument abzufragen, aber es kann trotzdem nicht verbinden. Außerdem teste ich die Verbindung zu MongoDB auf meinem lokalen Rechner - für eine einzelne Datenbank funktioniert es wie nötig.

+0

Können Sie versuchen zu verwenden 'verwenden yii \ mongodb \ Query als MongoQuery;' Und dann in der Methode: '$ query = new MongoQuery();' Weil es so aussieht, du bist nicht richtig schlagen Abfrageklasse –

+0

Nein, ich verwende die richtige Klasse. Ich löse dieses Problem und poste unten einen Kommentar. – Alex

Antwort

0

Das Problem war, weil mein php-mongodb einen Konflikt mit php7 hat, nachdem ich es aktualisieren beginnen als Notwendigkeit zu arbeiten.

Verwandte Themen