Im'正在嘗試在ZendFramework中將MongoDB與Doctrine集成在一起。我做了很多教程(在StackOverflow或其他地方),但沒有什麼是真正的工作。找不到'MongoId'類(使用MongoDB準則的Zend框架)
我按照一步一步的教程: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的源代碼,所以錯誤必須在別的地方。 這裏是我有的文件。 (管理員是模塊的名稱)
配置/ 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',
),
),
);
配置/自動加載/ module.doctrine-蒙戈-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');
}
}
模塊/管理/配置/ 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數據庫,並只是列出其中的所有文檔。
謝謝!
吉爾斯
是否已進行了確認蒙戈司機爲PHP已安裝? –
Y,mongo驅動程序已安裝! – Roux
您是使用'use'語句爲類指定空間還是使用反斜槓爲類加上前綴; I.E'new \ MongoId($ id)'? – AlexP