Doctrine MongoDB ODM a auto load annotací 2

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
josef.sabl
Člen | 153
+
0
-

Ahoj, mám stejný problém, o kterém se píše zde:

https://forum.nette.org/…ad-annotacii

Ale bohužel rada od Filipa Procházky mě nenakopla správným směrem :-(

Takto vypadá můj soubor s anotací:

namespace App\Model\Doc;

/** @ODM\Document */
class User extends Base
{
	/** @ODM\Id */
	public $id;

	/** @ODM\String */
	public $name;
}

A takto nějak vypadá kód umístěný přímo v bootstrap.php

AnnotationRegistry::registerAutoloadNamespace('App\Model\Doc', __DIR__ . '/../');

$config = new Configuration();
$config->setProxyDir(__DIR__ . '/../temp/Doctrine/Proxies');
$config->setProxyNamespace('Proxies');
$config->setHydratorDir(__DIR__ . '/../temp/Doctrine/Hydrators');
$config->setHydratorNamespace('Hydrators');
$config->setMetadataDriverImpl(AnnotationDriver::create(__DIR__ . '/model/doc'));

$container->addService('documentManager', DocumentManager::create(new Connection(), $config));

V presenteru je potom např.

$user = new App\Model\Doc\User;
$user->name = "John Doe";
$user->email = "john.doe@gmail.com";

$this->context->documentManager->persist($user);

A na posledním řádku mi to hodí výjimku:

[Semantical Error] The annotation „@ODM\Document" in class App\Model\Doc\User was never imported. Did you maybe forget to add a "use“ statement for this annotation?

Prosím o radu, co může být špatně. Díky dopředu!

Editoval josef.sabl (11. 2. 2015 17:43)

one-two
Člen | 80
+
+2
-

tenhle problém mi Doctrine ORM háže, když zapomenu use Doctrine\ORM\Mapping as ORM;

takže bych zkusil něco jako use Doctrine\ODM\MongoDB\Mapping as ODM; v tom prvnim souboru

enumag
Člen | 2118
+
+1
-

Zkus použít https://github.com/…/Annotations, autoloading by měl fungovat automaticky.

josef.sabl
Člen | 153
+
0
-

Díky za tip, ale nezabralo. Problém bude asi jinde :-(

Jen pro sychr. Nainstaloval jsem Composerem, přidal do config.neon mezi extensions.

josef.sabl
Člen | 153
+
0
-

Přesně je to use \Doctrine\ODM\MongoDB\Mapping\Annotations as ODM; a funguje velmi děkuji za pomoc!

Editoval josef.sabl (12. 2. 2015 10:40)

josef.sabl
Člen | 153
+
0
-

Tak to byla nakonec kombinace obou řešení. Díky!

bazo
Člen | 620
+
0
-

prihrejem si polievocku, na doctrine mongo odm existuje extension https://github.com/…er-extension