答えて

3

私は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(); 
    } 
} 
+0

文書を取得することができますが、文書の取得に問題があります。あなたはそれをすることができましたか? –

+1

@ Zoop-Joshあなたのトラブルは何ですか?ハイドレーターにエラーが見つかりませんか? – dextervip

+0

ハイドレーターエラーです。しかし、あなたがそれを持ち上げてから、私はあなたの指示を再確認しました。ハイドレーターの経路を更新してください!ありがとう! –

6

私はまったく同じことをしています。このようなものはうまくいくはずです:

モジュールをダウンロードし、ベンダーフォルダに置きます。

は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(); 
} 
+0

注 'module.doctrine_mongodb.config.local.php'は' module.doctrine_mongodbする必要がありますが見つかりませんでした.local.config.php' –

+0

こんにちは、それは私をたくさん助けました、ありがとう。私は今働いている。構成はちょっと複雑ですが、ここでは初心者を助けるための完全な答えを投稿します。 – dextervip

0

で、たとえば、デフォルトの設定が変更された、あなたは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() 
      ) 
     ), 
    ), 
); 

:クラス「アプリケーションの\ドキュメント\ユーザーは、」チェーン構成された名前空間に

関連する問題