Annotations Namespace not loaded DoctrineMongoODMModule for Zend Framework 2
doctrine-orm, mongodb, zend-framework2
Solution
I didn't yet work on the `DoctrineMongoODMModule`, but I'll get to it next week. Anyway, you are still using the "old way" of loading annotations. Most of the doctrine projects are now using `Doctrine\Common\Annotations\AnnotationReader`, while your `@AnnotationName` tells me that you were using the `Doctrine\Common\Annotations\SimpeAnnotationReader`. You can read more about it at the Doctrine\Common documentation
So here's how to fix your document:
<?php
namespace SdsCore\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
/** @ODM\Document */
class User
{
/**
* @ODM\Id(strategy="UUID")
*/
private $id;
/**
* @ODM\Field(type="string")
*/
private $name;
/**
* @ODM\Field(type="string")
*/
private $firstname;
/* etc */
}
Problem
I've loaded up the Doctrine MongoODM Module for zf2. I have got the document manager inside my controller, and all was going well until I tried to persist a document. It fails with this error: "[Semantical Error] The annotation "@Document" in class SdsCore\Document\User was never imported." It seems to fail on this line of DocParser.php `if ('\\' !== $name[0] && !$this->classExists($name)) {` It fails because `$name = 'Document'`, and the imported annotation class is `'Doctrine\ODM\MongoDB\Mapping\Annotations\Doctrine'` Here is my document class: ``` namespace SdsCore\Document; /** @Document */ class User { /** * @Id(strategy="UUID") */ private $id; /** * @Field(type="string") */ private $name; /** * @Field(type="string") */ private $firstname; public function get($property) { $method = 'get'.ucfirst($property); if (method_exists($this, $method)) { return $this->$method(); } else { $propertyName = $property; return $this->$propertyName; } } public function set($property, $value) { $method = 'set'.ucfirst($property); if (method_exists($this, $method)) { $this->$method($value); } else { $propertyName = $property; $this->$propertyName = $value; } } ``` } Here is my action controller: ``` 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(); } ```