2012-01-28 85 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); 
    }