私はzf2 beta3をdoctrine mongo odm(https://github.com/doctrine/DoctrineMongoODMModule)に統合しようとしていますが、成功しません。ZF2とDoctrine Mongo ODMを統合するには?
どうすればインストールして設定できますか?
私はzf2 beta3をdoctrine mongo odm(https://github.com/doctrine/DoctrineMongoODMModule)に統合しようとしていますが、成功しません。ZF2とDoctrine Mongo ODMを統合するには?
どうすればインストールして設定できますか?
私はMongoDBの教義のODMとZF2を統合するために行われている手順を行います
1.DownloadのMongoDB教義のODMモジュールと場所ベンダーのディレクトリ内またはgithubのからそれをクローン
cd /path/to/project/vendor
git clone --recursive https://github.com/doctrine/DoctrineMongoODMModule.git
2.Copyから/パス/ /プロジェクト/ベンダー/ DoctrineMongoODMModule /設定/モジュールのファイル。 doctrine_mongodb.config.php.dist、パス/ to/your/project/config/autoload /に置き、module.doctrine_mongodb.local.config.phpに名前を変更してください
3.あなたのmodule.doctrine_mongodb.local.configを編集してください.php。
'connection' => array(
//'server' => 'mongodb://<user>:<password>@<server>:<port>',
'server' => 'mongodb://localhost:27017',
'options' => array()
),
変更のparamsの接続
'driver' => array(
'class' => 'Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver',
'namespace' => 'Application\Document',
'paths' => array('module/Application/src/Application/Document'),
),
プロキシを追加ドライバオプションとhydratros設定デフォルトのDBに
'config' => array(
// set the default database to use (or not)
'default_db' => 'myDbName'
),
変更を変更
'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'],
)
),
4./path/to/project/module/Application/src/Application /に「Document」という名前のディレクトリを作成します。ここでドキュメントマッピングが行われ、「Document」ディレクトリ内に「Proxy」と「Hydrators」ディレクトリが作成されます。
5. /path/to/project/config/application.configを編集します。phpを追加し、 'DoctrineMongoODMModule'をモジュール配列に追加します
6. mongo php extensionがインストールされていることを確認してください。それ以外の場合はhttp://www.php.net/manual/en/mongo.installation.php#mongo.installation.windowsにダウンロードし、通常は/ php/extにコピーしてください。 php.iniにダウンロードした「extension = php_mongo-x.x.x-5.x-vc9.dll」という名前のファイル拡張子を示す拡張行を追加します。
7.ドキュメントディレクトリアプリケーションモジュールにドキュメントマッピングUser.phpを作成します。それ8.Persist
<?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;
}
}
、お使いのコントローラ
<?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にモジュールを追加する/設定/自動ロード
編集その独自の設定と設定ファイル
変更
:このようなあなたのコントローラで「setDocumentManager」メソッドを作成しますをmodule.doctrine_mongodb.local.config.phpするために、その設定ファイルの名前あなたのモジュールのDIの設定で、次の210
protected $documentManager;
public function setDocumentManager(DocumentManager $documentManager)
{
$this->documentManager = $documentManager;
return $this;
}
場所:
'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' –
こんにちは、それは私をたくさん助けました、ありがとう。私は今働いている。構成はちょっと複雑ですが、ここでは初心者を助けるための完全な答えを投稿します。 – dextervip
で、たとえば、デフォルトの設定が変更された、あなたは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()
)
),
),
);
:クラス「アプリケーションの\ドキュメント\ユーザーは、」チェーン構成された名前空間に
文書を取得することができますが、文書の取得に問題があります。あなたはそれをすることができましたか? –
@ Zoop-Joshあなたのトラブルは何ですか?ハイドレーターにエラーが見つかりませんか? – dextervip
ハイドレーターエラーです。しかし、あなたがそれを持ち上げてから、私はあなたの指示を再確認しました。ハイドレーターの経路を更新してください!ありがとう! –