Php Shanty_Mongo和Zend框架1.11

Php Shanty_Mongo和Zend框架1.11,php,zend-framework,mongodb,Php,Zend Framework,Mongodb,我正在玩zend framework 1.11和mongo。我决定使用Shanty_Mongo作为图书馆,让Zend和Mongo轻松结合,但我遇到了一个例外: 无法保存文档。文档未连接到数据库和集合 这是控制器中的代码: public function indexAction() { try { $guestbook = new Application_Model_Guestbook(); $guestbook-&

我正在玩zend framework 1.11和mongo。我决定使用Shanty_Mongo作为图书馆,让Zend和Mongo轻松结合,但我遇到了一个例外:

无法保存文档。文档未连接到数据库和集合

这是控制器中的代码:

    public function indexAction()
    {
         try {
            $guestbook = new Application_Model_Guestbook();
            $guestbook->setComment('Commento di prova')
                ->setEmail('info@example.net')
                ->save();
            $all_elements = Application_Model_Guestbook::all();
            $this->view->entries = $all_elements;
        } catch (Exception $exc) {
            echo $exc->getMessage();
        }
    }
这是模型的一部分:

class Application_Model_Guestbook extends Shanty_Mongo_Document
{
      protected static $_db = 'test';
      protected static $_collection = 'user';

      protected $_comment;
         .....
Shanty在我的library文件夹中,我在application.ini中添加了它:

resources.view[] =
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
autoloaderNamespaces[] = "Shanty"
关于棚户区Mongo文档,据报道

“如果您在没有任何身份验证的情况下连接到本地主机,则无需再担心连接问题。如果之前没有添加连接,Shanty Mongo将在第一次请求时自动连接。”

但这并没有发生。。我真的猜不出为什么。 显然,mongo正在运行,因为如果我使用php mongo(),我可以访问它并执行插入等操作

我正在osx 10.6.8上运行PHP5.3.6上的mongo、zend的最新版本
谢谢

我认为您可能希望将autoloaderNamespaces[]=“Shanty”行切换为:

autoloaderNamespaces[] = 'Shanty_Mongo'

除此之外,它看起来还可以……

这是一条奇怪的错误消息。注意,它没有说“无法连接到MongoDB”或类似的话。它表示此文档未连接到集合。对我来说,这听起来像是一个配置问题

在代码的其他区域中,您是否能够连接到数据库

从数据库读取?

Allesio

您和Adam C放在Autoloader命名空间数组中的元素不太正确。请尝试以下操作:

autoloaderNamespaces[] = "Shanty_"
您只需将顶级前缀后跟下划线即可。如果这不能解决问题,请告诉我。而且,我以前也没有看到过这个错误消息。当然,如果您在本地安装了mongoDB,则不需要指定任何身份验证参数

如果集合不存在,Shanty将创建它,如果文档不存在,Shanty也将创建它

您使用的是什么操作系统


我在Ubuntu存储库中遇到了很多问题。然而,将10gen存储库添加到apt并安装最新的稳定版本帮助了我。尽管这似乎也会周期性地崩溃

您的模型应该是这样的

 class Application_Model_Guestbook extends Shanty_Mongo_Document
 {
  protected static $_db = 'test';
  protected static $_collection = 'user';
  protected static $_requirements = array('comment'=>'Required')

尝试将其添加到Bootstrap.php:

  protected function _initMongoDB() {
    $connection = new Shanty_Mongo_Connection('mongodb://localhost:27017'); 
    Shanty_Mongo::addMaster($connection);
  }

我也尝试过,即使这对我来说没有意义,因为它实际上加载了棚户区图书馆。。不管怎样,我现在又试了一次,不幸的是没有成功。。我仍然收到同样的错误:(谢谢你!嗨,史蒂夫,谢谢你的回答。我写这篇文章是为了测试,所以我没有其他的权限从我的代码中的其他点访问db。如果你的意思是“你能以其他方式成功连接到mongo吗?”,实际上我可以使用php驱动程序写/读Mongo。。作为测试,我已经剪切并粘贴了代码,它成功地工作了。嗨,Matt,谢谢你的帮助!!!我按照你的建议尝试了,但没有工作。我确信Shanty加载正确,因为异常消息在Shanty代码中,特别是文档第907行。这里这是我的详细配置:我在OSX 10.6.8上运行PHP5.3.6 Mongo已经启动并运行,Db文件在我的hd根目录上(/data/Db)项目文件在/Volumes/data/Sites/test/,项目url是test.local我真的不明白Shanty为什么不能连接到它。。