J'essaie d'intégrer zf2 beta3 avec doctrine mongo odm (https://github.com/doctrine/DoctrineMongoODMModule) mais pas de succès.Comment intégrer ZF2 avec Doctrine Mongo ODM?
Comment puis-je l'installer et le configurer?
J'essaie d'intégrer zf2 beta3 avec doctrine mongo odm (https://github.com/doctrine/DoctrineMongoODMModule) mais pas de succès.Comment intégrer ZF2 avec Doctrine Mongo ODM?
Comment puis-je l'installer et le configurer?
Je donnerai les mesures que je l'ai fait pour intégrer ZF2 avec la doctrine mongodb odm
1.Download le module de doctrine mongodb odm et dans le répertoire des fournisseurs ou cloner à partir de GitHub
cd /path/to/project/vendor
git clone --recursive https://github.com/doctrine/DoctrineMongoODMModule.git
2.Copie le fichier/chemin/vers/projet/fournisseur/DoctrineMongoODMModule/config/module. doctrine_mongodb.config.php.dist, placez dans votre chemin/vers/votre/projet/config/autoload/et renommer en module.doctrine_mongodb.local.config.php
3.Modifiez votre module.doctrine_mongodb.local.config .php. Changer la valeur par défaut db
'config' => array(
// set the default database to use (or not)
'default_db' => 'myDbName'
),
Modifier votre connexion params
'connection' => array(
//'server' => 'mongodb://<user>:<password>@<server>:<port>',
'server' => 'mongodb://localhost:27017',
'options' => array()
),
Modifiez les options du pilote
'driver' => array(
'class' => 'Doctrine\ODM\MongoDB\Mapping\Driver\AnnotationDriver',
'namespace' => 'Application\Document',
'paths' => array('module/Application/src/Application/Document'),
),
Ajouter proxy et hydratros config
'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.Créer un répertoire nommé "Document" dans/chemin/vers/projet/module/Application/src/Application/où vont vos documents et dans le répertoire "Document", créer des répertoires "Proxy" et "Hydrators".
5.Modifiez votre /path/to/project/config/application.config.php et ajouter 'DoctrineMongoODMModule' au tableau de modules
6.Assurez-vous que vous avez installé l'extension php mongo sinon téléchargez-la au http://www.php.net/manual/en/mongo.installation.php#mongo.installation.windows et copiez-la dans le répertoire php de votre extension, généralement/php/ext. Ajouter la ligne d'extension en fonction de l'extension de fichier de nom que vous avez téléchargé "extension = php_mongo-x.x-5.x-vc9.dll" dans votre php.ini.
7.Créez un mappage de document User.php dans votre module d'application de répertoire de documents.
<?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, par exemple dans votre contrôleur
<?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();
}
}
Je fais exactement la même chose. Quelque chose comme ceci devrait fonctionner:
Téléchargez le module et placez-le dans votre dossier de fournisseur.
Ajouter le module dans application.config.php
Copie module.doctrine_mongodb.config.php.dist à/config/autoload
Modifier le fichier de configuration avec vos propres paramètres
Modifier la nom de ce fichier de configuration pour module.doctrine_mongodb.local.config.php
Créer une méthode « setDocumentManager » dans votre contrôleur comme ceci:
protected $documentManager;
public function setDocumentManager(DocumentManager $documentManager)
{
$this->documentManager = $documentManager;
return $this;
}
Placez les éléments suivants dans votre configuration du module DI:
'Application\Controller\[YourControllerClass]' => array(
'parameters' => array(
'documentManager' => 'mongo_dm'
)
),
Créer des classes de documents selon la Doctrine 2 documents, et la clarification de cette question et la réponse: Annotations Namespace not loaded DoctrineMongoODMModule for Zend Framework 2
Enfin, utilisez le dm comme ceci:
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();
}
Remarque '' module.doctrine_mongodb.config.local.php' doit être module.doctrine_mongodb .local.config.php' –
Salut, ça m'a beaucoup aidé, merci. Je l'ai fonctionné maintenant. La configuration est un peu complexe, je vais poster ici une réponse complète pour la configurer qui aide les débutants. – dextervip
Maintenant, la configuration par défaut a changé, pourrait vous montrer une méthode mise à jour pour obtenir ce travail en 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()
)
),
),
);
en cours de réception de l'erreur: La classe 'Application \ Document \ utilisateur' n'a pas été trouvé dans la chaîne configuré namespaces
Je suis en mesure d'obtenir des documents à persister, mais j'ai de la difficulté à récupérer des documents. Avez-vous réussi à faire cela? –
@ Zoop-Josh Quel est votre problème? Est-ce l'hydrateur non trouvé erreur? – dextervip
C'était l'erreur de l'hydrateur. Cependant, depuis que vous en avez parlé, j'ai revérifié vos instructions et c'était là; mettre à jour les chemins de l'hydrateur! Merci! –