Doctrine MongoDB ODM a auto load annotací 2
- josef.sabl
- Člen | 153
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)
- enumag
- Člen | 2118
Zkus použít https://github.com/…/Annotations, autoloading by měl fungovat automaticky.
- josef.sabl
- Člen | 153
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
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)
- bazo
- Člen | 620
prihrejem si polievocku, na doctrine mongo odm existuje extension https://github.com/…er-extension