2012-01-28 58 views
0

我在玩zend framework 1.11和mongo。我决定使用Shanty_Mongo作为图书馆来轻松将Zend和Mongo连接起来,但我陷入了这个例外:Shanty_Mongo和Zend Framework 1.11

无法保存文档。文件没有被连接到一个分贝和收集

这是在控制器中的代码:模型的

public function indexAction() 
    { 
     try { 
      $guestbook = new Application_Model_Guestbook(); 
      $guestbook->setComment('Commento di prova') 
       ->setEmail('[email protected]') 
       ->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; 
     ..... 

棚屋是在我库文件夹,并在application.ini中添加了它:

resources.view[] = 
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/" 
autoloaderNamespaces[] = "Shanty" 

对于Shanty-Mongo文档,据报道,

“如果您在没有任何身份验证的情况下连接到本地主机,则无需再担心连接。棚户蒙戈会如果没有连接已被预先加到第一个请求自动连接。”

,但这种情况不会发生。我真的无法猜测为什么。 显然,蒙戈运行,因为如果我使用PHP蒙戈()我可以访问它,并执行插入,等等

我运行最新版本的蒙戈的,Zend公司在PHP 5.3.6在OSX 10.6.8 谢谢!

回答

0

我想您可能需要将该autoloaderNamespaces [] =“Shanty”行切换为:

autoloaderNamespaces[] = 'Shanty_Mongo' 

除此之外,它看起来不错....

+0

我tryed它也一样,即使这没有任何意义,我因为它实际上载入棚户库..反正我又现在tryed和不幸又没有成功..我仍然得到同样的错误:( 还是要谢谢你! – 2012-01-30 13:18:00

0

这是一个奇怪的错误消息。注意它没有说“无法连接到MongoDB”或类似的。它说这个文件没有连接到一个集合。这听起来像是一个配置问题。

在你的代码的其他领域你能够连接到数据库吗?

从数据库中读取数据?

+0

喜史蒂夫,感谢你的答案。我写了这是一个测试,所以我没有其他人可以从我的代码中的其他位置访问数据库。如果你的意思是“你可以成功Ÿ连接在一些其他的方式”来蒙戈,其实我可以写/使用PHP驱动器读取到蒙戈..作为一个测试,我已经剪切和粘贴上http://www.php.net/manual/en/代码mongo.tutorial.php并成功运行。 – 2012-01-31 07:13:59

0

Allesio,

元素,无论你和亚当c具有把autoloaderNamespaces阵列上是不太正确的。请尝试以下操作:

autoloaderNamespaces[] = "Shanty_" 

您只需要放置顶级前缀后跟下划线。请让我知道如果这不能解决这种情况。另外,我还没有看到过这个错误信息。当然,如果你有本地安装的mongoDB运行,你不需要指定任何验证参数。

如果收集不存在,Shanty会创建它,如果文档不存在,Shanty也会创建它。

您使用的是什么操作系统?

我在Ubuntu软件仓库中遇到了一些麻烦。但是,将10gen存储库添加到apt并安装最新的稳定版本帮助了我。虽然即使那样也会周期性地崩溃。

+0

嗨马特,感谢您的协助!我按照你的建议尝试过,但没有奏效。 我相信Shanty加载正确,因为异常消息在Shanty代码中,特别是在Document中,在第907行。 以下是我的配置详细信息: 我在OSX上运行php 5.3.6 0 Mongo正在运行, Db文件位于我的根目录(/ data/db) 项目文件在/ Volumes/Data/Sites/test /, 项目网址是test.local 我无法真正了解为什么Shanty无法连接到它.. – 2012-02-04 08:44:33

1

你的模型应该是这样的

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

尝试增加这bootstrap.php中:

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