我想ZF2素β3教義蒙戈ODM(https://github.com/doctrine/DoctrineMongoODMModule),但沒有sucess整合。如何將ZF2與Doctrine Mongo ODM整合?
如何安裝和配置呢?
我想ZF2素β3教義蒙戈ODM(https://github.com/doctrine/DoctrineMongoODMModule),但沒有sucess整合。如何將ZF2與Doctrine Mongo ODM整合?
如何安裝和配置呢?
我會給我所做的ZF2與MongoDB的學說ODM整合步驟
1.Download MongoDB的學說ODM模塊和發生在供應商目錄,或者從GitHub克隆它
cd /path/to/project/vendor
git clone --recursive https://github.com/doctrine/DoctrineMongoODMModule.git
2.複印文件從/路徑/到/項目/供應商/ DoctrineMongoODMModule /配置/模塊。 doctrine_mongodb.config.php.dist,放在你的路徑/ to/your/project/config/autoload /並重命名爲module.doctrine_mongodb.local.config.php
3.編輯你的module.doctrine_mongodb.local.config .PHP。 更改默認的數據庫
'config' => array(
// set the default database to use (or not)
'default_db' => 'myDbName'
),
更改連接PARAMS
'connection' => array(
//'server' => 'mongodb://<user>:<password>@<server>:<port>',
'server' => 'mongodb://localhost:27017',
'options' => array()
),
更改驅動程序選項
'driver' => array(
'class' => 'Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver',
'namespace' => 'Application\Document',
'paths' => array('module/Application/src/Application/Document'),
),
添加代理和hydratros配置
'mongo_config' => array(
'parameters' => array(
'opts' => array(
'auto_generate_proxies' => true,
'proxy_dir' => __DIR__ . '/../../module/Application/src/Application/Document/Proxy',
'proxy_namespace' => 'Application\Model\Proxy',
'auto_generate_hydrators' => true,
'hydrator_dir' => __DIR__ . '/../../module/Application/src/Application/Document/Hydrators',
'hydrator_namespace' => 'Application\Document\Hydrators',
'default_db' => $settings['config']['default_db'],
),
'metadataCache' => $settings['cache'],
)
),
.在/ path/to/project/module/Application/src/Application /目錄中創建一個名爲「Document」的目錄,在其中創建「Proxy」和「Hydrators」目錄。
5.Edit您/path/to/project/config/application.config。PHP和添加「DoctrineMongoODMModule」到模塊陣列
6.Be確保已安裝蒙戈PHP擴展,否則下載的http://www.php.net/manual/en/mongo.installation.php#mongo.installation.windows並將它複製到你的擴展PHP目錄,通常是/ PHP /分機。在你的php.ini中添加你下載的擴展名「extension = php_mongo-x.x.x-5.x-vc9.dll」的擴展名。
7.在文檔目錄應用程序模塊中創建一個映射User.php的文檔。
<?php
namespace Application\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
/** @ODM\Document */
class User
{
/** @ODM\Id */
private $id;
/** @ODM\Field(type="string") */
private $name;
/**
* @return the $id
*/
public function getId() {
return $this->id;
}
/**
* @return the $name
*/
public function getName() {
return $this->name;
}
/**
* @param field_type $id
*/
public function setId($id) {
$this->id = $id;
}
/**
* @param field_type $name
*/
public function setName($name) {
$this->name = $name;
}
}
8.Persist它,例如在你的控制器
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\ActionController,
Zend\View\Model\ViewModel,
Application\Document\User;
class IndexController extends ActionController
{
public function indexAction()
{
$dm = $this->getLocator()->get('mongo_dm');
$user = new User();
$user->setName('Bulat S.');
$dm->persist($user);
$dm->flush();
return new ViewModel();
}
}
我做一樣的事情。像這樣的東西應該工作:在您的供應商目錄
下載的模塊和地點。
添加模塊application.config.php
複製module.doctrine_mongodb.config.php.dist到/配置/自動加載
編輯與您自己的設置配置文件
更改該配置文件的名稱module.doctrine_mongodb.local.config.php
在控制器這樣創建「setDocumentManager」的方法:
protected $documentManager;
public function setDocumentManager(DocumentManager $documentManager)
{
$this->documentManager = $documentManager;
return $this;
}
放置在你的模塊的DI配置如下:
'Application\Controller\[YourControllerClass]' => array(
'parameters' => array(
'documentManager' => 'mongo_dm'
)
),
根據教義2文檔創建文檔類和澄清這個問題,答案是:Annotations Namespace not loaded DoctrineMongoODMModule for Zend Framework 2
最後,使用DM像這樣:
public function indexAction()
{
$dm = $this->documentManager;
$user = new User();
$user->set('name', 'testname');
$user->set('firstname', 'testfirstname');
$dm->persist($user);
$dm->flush();
return new ViewModel();
}
注'module.doctrine_mongodb.config.local.php'應該是沒有被發現'module.doctrine_mongodb .local.config.php' – 2012-04-25 00:37:10
嗨,它幫了我很多,謝謝。我現在開始工作了。配置有點複雜,我會在這裏發佈一個完整的配置來幫助新手。 – dextervip 2012-04-25 03:55:09
現在默認的配置發生了變化,你能表現出一個更新的方法來獲得在ZF2這方面的工作?
<?php
return array(
'doctrine' => array(
'connection' => array(
'odm_default' => array(
'server' => 'localhost',
'port' => '27017',
'user' => null,
'password' => null,
'dbname' => 'user',
'options' => array()
),
),
'configuration' => array(
'odm_default' => array(
'metadata_cache' => 'array',
'driver' => 'odm_default',
'generate_proxies' => true,
'proxy_dir' => 'data/DoctrineMongoODMModule/Proxy',
'proxy_namespace' => 'DoctrineMongoODMModule\Proxy',
'generate_hydrators' => true,
'hydrator_dir' => 'data/DoctrineMongoODMModule/Hydrator',
'hydrator_namespace' => 'DoctrineMongoODMModule\Hydrator',
'default_db' => null,
'filters' => array() // array('filterName' => 'BSON\Filter\Class')
)
),
'driver' => array(
'odm_default' => array(
'drivers' => array()
)
),
'documentmanager' => array(
'odm_default' => array(
'connection' => 'odm_default',
'configuration' => 'odm_default',
'eventmanager' => 'odm_default'
)
),
'eventmanager' => array(
'odm_default' => array(
'subscribers' => array()
)
),
),
);
目前收到的錯誤:類「應用程序\文獻\用戶」鏈中的配置命名空間
我可以讓文件保留,但我無法檢索文件。你設法做到了嗎? – 2012-05-02 02:37:56
@ Zoop-Josh你有什麼麻煩?水合物未找到錯誤? – dextervip 2012-05-03 02:05:57
這是水化器錯誤。但是,既然你提起了它,我重新檢查了你的指示,它就在那裏;更新水化器路徑!謝謝! – 2012-05-03 07:40:22