Doctrine 2 & rozšírenie Gedmo
- mbskot
- Člen | 42
cafte,
rozširoval z Vás niekto Doctrine 2 o Gedmo? Snažím sa využiť ich
rozšírenie Tree, ale neviem to priviesť k životu.
Požičal som si Hosiplanové pieskovisko(funguje thx :)) a podľa tohto návodu som doňho vložil Gedmo
Adresárovú štruktúru mám libs/Doctrine/DoctrineExtensions/lib/Gedmo,
v libs/Kdyby/Doctrine/Container.php som upravil metódu createServiceEntityManager takto:
/**
* @return Doctrine\ORM\EntityManager
*/
protected function createServiceEntityManager()
{
$database = $this->container->params['database'];
if (key_exists('driver', $database) && $database['driver'] == "pdo_mysql" && key_exists('charset', $database))
{
$this->eventManager->addEventSubscriber($this->mysqlSessionInitListener);
}
$this->eventManager->addEventSubscriber(new Gedmo\Tree\TreeListener());
$this->freeze();
return Doctrine\ORM\EntityManager::create((array)$database, $this->configuration, $this->eventManager);
}
v libs/Kdyby/Loaders/DoctrineLoader.php som pridal pridal do funkcie register toto:
$commonLoader = self::$registered[] = new Doctrine\Common\ClassLoader('Gedmo', LIBS_DIR . '/Doctrine/DoctrineExtensions/lib');
$commonLoader->register();
no a anotáciu v entitách používam tak, ako je uvedená v návode (gedmo:TreeLeft…)
Keď som skúsil vytvoriť root(predpokladám, že sa nemusím starať o ľavú a pravú hodnotu)
$root = new Project\Models\Item();
$root->setTitle('root');
$this->em->persist($root);
$this->em->flush();
PDO vyhodí exception Integrity constraint violation: 1048 Column ‚lft‘ cannot be null, z čoho usudzujem, že Gedmo sa toho ani nedotklo. Poradí mi niekto pls, čo robím zle?
- mbskot
- Člen | 42
bude tam asi nejaký problém s verziami, lebo keď som dal Doctrine 2.0.7 s Gedmo, tak sa aspoň Gedmo ozvalo. Síce vyhadzovalo chybu za chybou a nepodarilo sa mi ich odstrániť, ale aspoň čosi.
Teraz mám Doctrine 2.2.0 s týmto Gedmo a to nefunguje vôbec.
- Nox
- Člen | 378
mbskot jde o to že v novějších verzích se musí nastavit AnnotationReader… zatím's to dělat nemusel nutně, protože jakýsi výchozí – jak se v tom souboru píše – už je přidaný do ORM https://github.com/…guration.php#L134
pokud ale potřebuješ něco mimo základ, je IMHO potřeba donastavit/přidat_vlastní AnnotationReader (viz odkaz)
EDIT:
tak se opravuju, asi by to teda mělo jet https://github.com/…bscriber.php#L213 …
Editoval Nox (26. 9. 2011 20:59)
- mbskot
- Člen | 42
Videl som, že queryBuilder môže robiť aj update aj delete. Tak ma
napadlo, že by som mohol
použiť repository pre správu stromu. Vytvoril by som TreeRepository, ktorý
by dedil od EntityRepository a všetky ‚custom repositories‘, ktoré by
potrebovali správu stromu, by dedili od TreeRepository. Mohlo by to
tak byť?