【发布时间】:2017-03-10 10:34:52
【问题描述】:
我正在尝试将 mongoDB 与 phalcon API 框架连接起来。 我的代码如下:
index.php 文件
<?php
if ($handle = opendir('include/models')) {
while (false !== ($entry = readdir($handle))) {
if (preg_match('/\.php$/', $entry)) {
require_once "include/models/$entry";
}
}
closedir($handle);
}
require 'vendor/autoload.php';
use Phalcon\DI\FactoryDefault;
use Phalcon\Mvc\Model;
$app = new Phalcon\Mvc\Micro();
$di = new \Phalcon\DI\FactoryDefault();
$config = new Phalcon\Config\Adapter\Ini('include/config/config.ini');
// Simple database connection to localhost
$di->set('mongo', function() {
$manager = new MongoDB\Driver\Manager("mongodb://localhost:27017");
return $manager->selectDb("MyApi");
},true);
$di->set('collectionManager', function () {
return new Phalcon\Mvc\Collection\Manager();
});
$app->setDI($di);
$directory = new User_detail();
$app->get('/userdetail/{code}', function ($code) use ($app,$directory) {
$directory->getUser($app,$code);
});
$app->notFound(function () use ($app) {
$app->response->setStatusCode(424, "Method Failed")->sendHeaders();
echo json_encode(array('status' => 'ERROR', 'messages' => "Method Failed"));
});
$app->handle();
?>
模型文件 User_detail.php
<?php
use Phalcon\Mvc\Collection;
use Phalcon\Mvc\Model;
use MongoDB\Driver\Manager;
use Phalcon\Mvc\Micro;
use Phalcon\Db\Column;
class User_detail extends Collection
{
public function initialize()
{
$this->setSource("User");
}
function getUser($app,$code)
{
$robot = User_detail::findFirst(
[
[
"Name" => "android",
]
]
);
echo $robot->Name; die;
}
}
?>
我收到错误
错误:调用未定义的方法 MongoDB\Driver\Manager::selectDb() in index.php
这有什么问题?
【问题讨论】:
-
您的错误告诉您
selectDb方法在MongoDB\Driver\Manager类中不存在。如果你打开那个类,你会看到那里不存在该方法......因此给你错误。 -
谢谢!!!你有什么想法吗,用哪个函数来选择数据库?
-
如果我没记错的话使用:
$manager = new MongoClient(); return $manager->selectDB("MyApi");。查看文档:docs.phalconphp.com/en/3.0.1/reference/…。但是如果你使用的是 PHP7,你确实应该使用 phalcon 孵化器:github.com/phalcon/incubator/tree/master/Library/Phalcon/Db/…