Doctrine 2 & rozšírenie Gedmo

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

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
+
0
-

mám verziu 2.1.1

mbskot
Člen | 42
+
0
-

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
+
0
-

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
+
0
-

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ť?