Shanty_Mongo и Zend Framework 1.11 - PullRequest
0 голосов
/ 28 января 2012

Я играю с Zend Framework 1.11 и Монго.Я решил использовать 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;
         .....

Шанти находится в папке моей библиотеки, и в application.ini я добавил его:

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

В документах Шанти-Монго сообщается, что

"Если вы подключаетесь к localhost без какой-либо аутентификации, вам больше не нужно беспокоиться о соединениях. Shanty Mongo автоматически подключится при первом запросе, если ранее не было добавлено ни одного соединения."

но этого не происходит .. Я действительно не могу догадаться, почему.Очевидно, что mongo работает, так как, если я использую php Mongo (), я могу получить к нему доступ и выполнить вставки и т. Д. *

Я использую последнюю версию mongo, zend на php 5.3.6 на osx10.6.8 Спасибо!

Ответы [ 5 ]

1 голос
/ 22 июня 2012

Ваша модель должна быть такой

 class Application_Model_Guestbook extends Shanty_Mongo_Document
 {
  protected static $_db = 'test';
  protected static $_collection = 'user';
  protected static $_requirements = array('comment'=>'Required')
0 голосов
/ 08 октября 2013

Попробуйте добавить это в Bootstrap.php:

  protected function _initMongoDB() {
    $connection = new Shanty_Mongo_Connection('mongodb://localhost:27017'); 
    Shanty_Mongo::addMaster($connection);
  }
0 голосов
/ 30 января 2012

Это странное сообщение об ошибке.Обратите внимание, что там не написано «невозможно подключиться к MongoDB» или что-то подобноеВ нем говорится, что этот документ не связан с коллекцией.Это звучит как проблема конфигурации для меня.

В других областях вашего кода вы можете подключиться к базе данных?

Чтение из базы данных?

0 голосов
/ 03 февраля 2012

Allesio,

элемент, который вы и Адам С поместили в массив autoloaderNamespaces, не совсем корректен. Попробуйте следующее:

autoloaderNamespaces[] = "Shanty_"

Вам нужно только поставить префикс верхнего уровня, за которым следует подчеркивание. Пожалуйста, дайте мне знать, если это не разрешит ситуацию. Кроме того, я не видел это сообщение об ошибке раньше. Конечно, если у вас установлена ​​локальная установка mongoDB, вам не нужно указывать какие-либо параметры аутентификации.

Если коллекция не существует, Shanty создаст ее, а если документ не существует, Shanty также создаст это.

Какую операционную систему вы используете?

У меня был ряд проблем с пакетом в репозиториях Ubuntu. Однако мне помогло добавление репозитория 10gen в apt и установка последней стабильной версии. Хотя даже это, кажется, периодически дает сбой.

0 голосов
/ 30 января 2012

Я думаю, что вы можете изменить эту строку autoloaderNamespaces [] = "Shanty" на:

autoloaderNamespaces[] = 'Shanty_Mongo'

Кроме того, все выглядит хорошо ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...