草庐IT

php - 找不到类 'MongoId'(Zend Framework with MongoDB Doctrine)

coder 2023-10-30 原文

我目前正在尝试将 MongoDB 与 ZendFramework 中的 Doctrine 集成。我做了很多教程(在 StackOverflow 或其他任何地方),但没有任何效果。

我一步步跟着教程:http://www.bigwisu.com/2012/10/03/zend-framework-2-doctrine-odm我得到了一个我不明白的错误。

Fatal error: Class 'MongoId' not found in /home/prooxi/www/zframework/vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/Types/IdType.php on line 38

IdType.php 是 mongoDB 的源代码,所以错误一定出在其他地方。 这是我的文件。 (admin是模块的名字)

配置/application.config.php

<?php
return array(
    'modules' => array(
               'Application',
               'DoctrineModule',
               'DoctrineMongoODMModule',
               'Udmin',
               'Listing',
               'Admin',
    ),

    'module_listener_options' => array(
        'module_paths' => array(
            './module',
            './vendor',
        ),

        'config_glob_paths' => array(
            'config/autoload/{,*.}{global,local}.php',
        ),

    ),

);

config/autoload/module.doctrine-mongo-odm.local.php

<?php
return array(
         'doctrine' => array(

                 'connection' => array(
                               'odm_default' => array(
                                          'server'           => 'MYDBADRESS',
                                          'port'             => '27017',
                                          /* 'connectionString' => null, */
                                          /* 'user'             => null, */
                                          /* 'password'         => null, */
                                          'dbname'           => 'px_boutique_test27',
                                          'options'          => array()
                                          ),
                               ),

                 'configuration' => array(
                              'odm_default' => array(
                                         'metadata_cache'     => 'array',
                                         'driver'             => 'odm_default',
                                         'generate_proxies'   => true,
                                         'proxy_dir'          => 'data/DoctrineMongoODMModule/Proxy',
                                         /* 'proxy_dir'          => __DIR__ . '/module/Admin/src/Admin/Model/Proxy',  */
                                         /* 'proxy_dir'          => __DIR__ . '/module/Udmin/src/Udmin/Model/Proxy', */
                                         'proxy_namespace'    => 'DoctrineMongoODMModule\Proxy',
                                         /* 'proxy_namespace'    => 'Udmin\Model\Proxy', */
                                         'generate_hydrators' => true,
                                         'hydrator_dir'       => 'data/DoctrineMongoODMModule/Hydrator',
                                         /* 'hydrator_dir'       => __DIR__ . '/module/Udmin/src/Udmin/Model/Hydrator', */
                                         'hydrator_namespace' => 'DoctrineMongoODMModule\Hydrator',
                                         /* 'hydrator_namespace' => 'Udmin\Model\Hydrator', */
                                         'default_db'         => 'test27',
                                         'filters'            => array(),  // array('filterName' => 'BSON\Filter\Class'),
                                         /* 'logger'             => null // 'DoctrineMongoODMModule\Logging\DebugStack' */
                                         )
                              ),

                 'driver' => array(
                           'odm_default' => array(
                                      'drivers' => array(
                                                 'Admin\Document' => 'aplikasi'
                                                 )
                                      ),
                           'aplikasi' => array(
                                       'class' => 'Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver',
                                       'cache' => 'array',
                                       'paths' => array(
                                            'module/Admin/src/Admin/Document'
                                            )
                                       )
                           ),
                 'documentmanager' => array(
                                'odm_default' => array(
                                           'connection'    => 'odm_default',
                                           'configuration' => 'odm_default',
                                           'eventmanager' => 'odm_default'
                                           )
                                ),
                 'eventmanager' => array(
                             'odm_default' => array(
                                        'subscribers' => array()
                                        )
                             ),              

                 ),
         );

模块/Admin/Src/Admin/Controller/AdminController.php

<?php
namespace Admin\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Mongo;
use Zend\Session\SaveHandler\MongoDB;
use Zend\Session\SaveHandler\MongoDBOptions;
use Zend\Session\SessionManager;
use Admin\Document\Boutique;

 class AdminController extends AbstractActionController
 {
     public function indexAction()
     {
       $dm = $this->getServiceLocator()->get('doctrine.documentmanager.odm_default');
       $b = new Boutique();

       /* $dm->getRepository('Admin\Document\Boutique')->findAll(); */
       $dm->find('Admin\Document\Boutique', '52e6c677362dca7fcd40ab09');
     }
}

模块/Admin/config/module.config.php

<?php
return array(
         'controllers' => array(
                    'invokables' => array(
                              'Admin\Controller\Admin' => 'Admin\Controller\AdminController',
                              ),
                    ),

         'router' => array(
                   'routes' => array(
                         'admin' => array(
                                  'type'    => 'segment',
                                  'options' => array(
                                             'route'    => '/admin[/][:action][/:id]',
                                             'constraints' => array(
                                                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                                        'id'     => '[0-9]+',
                                                        ),
                                             'defaults' => array(
                                                     'controller' => 'Admin\Controller\Admin',
                                                     'action'     => 'index',
                                                     ),
                                             ),
                                  ),
                         ),
                   ),

         'view_manager' => array(
                     'template_path_stack' => array(
                                    'admin' => __DIR__ . '/../view',
                                    ),
                     ),

         );

该模块的目的是连接到现有的 MongoDB 数据库,并列出其中的所有文档。

谢谢!

吉尔斯

最佳答案

如果您使用较新的 mongodb 扩展而不是 PHP 的 mongo 扩展,您将需要使用 MongoDB\BSON\ObjectID,详见 php.net

关于php - 找不到类 'MongoId'(Zend Framework with MongoDB Doctrine),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21953352/

有关php - 找不到类 'MongoId'(Zend Framework with MongoDB Doctrine)的更多相关文章

  1. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  2. ruby-on-rails - 按天对 Mongoid 对象进行分组 - 2

    在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev

  3. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  4. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  5. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  6. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  7. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  8. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  9. ruby-on-rails - rspec should have_select ('cars' , :options => ['volvo' , 'saab' ] 不工作 - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request

  10. ruby-on-rails - Rails 中的 NoMethodError::MailersController#preview undefined method `activation_token=' for nil:NilClass - 2

    似乎无法为此找到有效的答案。我正在阅读Rails教程的第10章第10.1.2节,但似乎无法使邮件程序预览正常工作。我发现处理错误的所有答案都与教程的不同部分相关,我假设我犯的错误正盯着我的脸。我已经完成并将教程中的代码复制/粘贴到相关文件中,但到目前为止,我还看不出我输入的内容与教程中的内容有什么区别。到目前为止,建议是在函数定义中添加或删除参数user,但这并没有解决问题。触发错误的url是http://localhost:3000/rails/mailers/user_mailer/account_activation.http://localhost:3000/rails/mai

随机推荐