首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB和Phalcon

MongoDB和Phalcon
EN

Stack Overflow用户
提问于 2017-03-10 10:34:52
回答 2查看 1.9K关注 0票数 0

我正在尝试将mongoDB与phalcon框架连接起来。我的代码如下:

index.php文件

代码语言:javascript
复制
<?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

代码语言:javascript
复制
<?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;

    }
}
?> 

我的错误就像

错误:调用index.php中未定义的方法MongoDB\Driver\Manager::selectDb()

有什么问题吗?

EN

回答 2

Stack Overflow用户

发布于 2017-03-11 16:21:33

首先,我使用composer将Phalcon孵化器安装到我的供应商目录中:

代码语言:javascript
复制
composer require phalcon/incubator

然后,我确保加载了供应商库:

代码语言:javascript
复制
include_once SITE_ROOT . 'vendor/autoload.php';

然后我使用在vendor/phalcon/incubator/Library/Phalcon/Db/Adapter/MongoDB/Client.php中找到的\Phalcon\Db\Adapter\MongoDB\Client()

在services.php中:

代码语言:javascript
复制
$di->setShared('mongo', function () use ($config) {
    $mongo = new \Phalcon\Db\Adapter\MongoDB\Client();
    return $mongo->selectDatabase($config->mongodb->dbname);
});

然后确保我的(vendor/phalcon/incubator/Library/Phalcon/Mvc/MongoCollection.php).扩展\ MongoCollection \Mvc\MongoCollection MongoCollection

模型/MyCollectionStats.php Stats.php:

代码语言:javascript
复制
<?php

namespace Common\Models;

class MyCollectionStats extends \Phalcon\Mvc\MongoCollection
{...
票数 2
EN

Stack Overflow用户

发布于 2017-03-10 10:46:05

对于php7,您需要使用MongoCollection和孵化器中的其他相关类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42716213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档