ZendFramework, Doctrine 2 ODM с mongoDB - Ошибка гидратора - PullRequest
2 голосов
/ 01 февраля 2012

Я использую Zend Framework в сочетании с Doctrine 2 и mongoDB.Пока все хорошо.

Теперь я переписываю свой пользовательский класс проверки, чтобы проверить, существует ли имя пользователя в базе данных.(Этот код отлично работал с ORM и MySQL, но не сейчас с ODM и mongoDB.)

Поэтому мой пользовательский класс проверки выглядит следующим образом:

<?php

class Project_Validate_UsernameUnique extends Zend_Validate_Abstract {
const USERNAME_EXISTS = '';

protected $_messageTemplates = array (
    self::USERNAME_EXISTS => "'%value%' is taken. Please choose another username."
);

public function isValid($value) {
            // setting value for the form
            $this->_setValue($value);

            // get the document manager and repository              
            $front = Zend_Controller_Front::getInstance();
            $dm = $front->getParam('bootstrap')->getResource('odm');
            $userRepository = $dm->getRepository('Entities\User');

            $user = $userRepository->findOneBy(array('username' => $value));        

            // if an user was found, return false
            if ($user) {
                    $this->_error(self::USERNAME_EXISTS);
                    return false;
            }
            return true;
     }
}

Но я получаю эту ошибку здесь:

Warning:   file_put_contents(/Applications/XAMPP/xamppfiles/htdocs/project/application/models/Hydrators/EntitiesUserHydrator.php) [function.file-put-contents]: failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/htdocs/project/library/Doctrine/ODM/MongoDB/Hydrator/HydratorFactory.php on line 343

Я также пытался найти findBy и без аннотации массива (findByUsername или findOneByUsername), но, тем не менее, я либо получаю эту ошибку, либо как-то "ничего".С ORM и MySQL все работало идеально, так в чем же проблема?

Заранее спасибо!

1 Ответ

3 голосов
/ 01 февраля 2012

Доступна ли для записи папка Hydrators PHP?

...