php7.0. Phalcon 3.2.MongoDB 3.2.14
我想连接到数据库,但 Phalcon 文档描述了通过 MongoClient() 建立连接并仅通过它工作,尽管它在很久以前就已经过时并且在 7.0 中通常被弃用。我怎样才能使 Phalcon 朋友变得现代和舒适\MongoDB\Driver\Manager()?因为services.php最起码我是这样设置的,貌似不骂人,代码是这样的:
/**
* MongoDB connection
*/
$di->set( "mongo", function () {
$config = $this->getConfig();
$db_string = sprintf( 'mongodb://%s:%s/%s', $config->mongodb->host, $config->mongodb->port, $config->mongodb->database );
if( isset( $config->mongodb->user ) AND isset( $config->mongodb->password ) ) {
$db_string = sprintf( 'mongodb://%s:%s@%s:%s/%s',
$config->mongodb->user,
(string)$config->mongodb->password,
$config->mongodb->host,
(string)$config->mongodb->port,
$config->mongodb->database );
}
try {
return new \MongoDB\Driver\Manager( $db_string );
} catch (MongoConnectionException $e) {
die( 'Failed to connect to MongoDB '.$e->getMessage() );
}
},
true
);
但他不喜欢模特。我写信给app/models/User.php:
use Phalcon\Mvc\Collection;
class User extends Collection
{
public function initialize()
{
$this->setSource('users');
}
}
我在控制器中调用:
class IndexController extends ControllerBase
{
public function indexAction()
{
echo User::count();
}
}
是这样写的:
Call to undefined method ::selectcollection()
#0 [internal function]: Phalcon\Mvc\Collection::_getGroupResultset(Array, Object(User), Object(MongoDB\Driver\Manager))
#1 /var/www/testing/app/controllers/IndexController.php(8): Phalcon\Mvc\Collection::count()
#2 [internal function]: IndexController->indexAction()
#3 [internal function]: Phalcon\Dispatcher->callActionMethod(Object(IndexController), 'indexAction', Array)
#4 [internal function]: Phalcon\Dispatcher->_dispatch()
#5 [internal function]: Phalcon\Dispatcher->dispatch()
#6 /var/www/testing/public/index.php(42): Phalcon\Mvc\Application->handle()
#7 {main}
如何取胜?
首先,我使用 composer 安装了 Phalcon 孵化器到我的 vendor 目录中:
然后我确保加载供应商库:
然后我使用
\Phalcon\Db\Adapter\MongoDB\Client()发现vendor/phalcon/incubator/Library/Phalcon/Db/Adapter/MongoDB/Client.php在
services.php:然后确保我的 MongoCollection 扩展
\Phalcon\Mvc\MongoCollection(vendor/phalcon/incubator/Library/Phalcon/Mvc/MongoCollection.php)。models/MyCollectionStats.php:答案就在这里。希望这对将来的人有帮助:)