Implementace Cache do Doctrine 2

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

Mate nekdo implementovanou Nette Cache do Doctrine 2? Jde mi o implementaci metody getIds, se kterou si nevim rady…

Filip Procházka
Moderator | 4668
+
0
-

Funkční implementaci najdeš zde: https://github.com/…ne/Cache.php

Počítá ovšem s tím, že budeš pomocí ní i ukládat, jinak ti ids neumí poskytnout.

arron
Člen | 464
+
0
-

Diky moc:-)

Fanda
Člen | 39
+
0
-

Snažím se implementovat Kdyby a tak nějak se pooomalu posouvám vpřed (jsem nováček). Chtěl bych k modelu přistupovat přes servisní vrstvu, ale nevím, jak jí pomocí DI předat EntityManager. Všechno mám nachystaný, jen to DI. Nemáte to někde k nahlídnutí?

Díky.

Patrik Votoček
Člen | 2221
+
0
-

a nachystane to mas jak (vesteckou kouli bohuzel nemam)? ukaz aspon jak registrujes tu service vrstvu do DI containeru.

Fanda
Člen | 39
+
0
-

Vycházím z implementace Kdyby a přesně tak to mám, jen jsem přidal service vrstvu pro přístup k doctrine/entitám. Četl jsem v dokumentaci, že DI je nejefektivnější pomocí config.neon, ale tady už je zaregistrováno (díky za to :-)). Zatím jsem to vyřešil /zřejmě provizorně/ tak, že jsem v konstruktoru BaseService vytvořil instanci entity manageru:

abstract class BaseService extends \Nette\Object
{
    /**
     * Entity manager
     * @var EntityManager
     */
    protected $_em;

    /**
     * Constructor
     * @todo DI by param EntityManager $em
     */
    public function __construct()
    {
        $this->_em = \Nette\Environment::getContext()->doctrine->entityManager;
    }

}

Funguje to, tak jsem šel zatím dál. Ale jestli je efektivnější cesta, chtěl bych se k tomu později vrátit…

Filip Procházka
Moderator | 4668
+
0
-

Jo takhle… No k tomu se nedostaneš v configu. Protože je celá Doctrine v „sub-kontejneru“.

norbe
Backer | 405
+
0
-

Můžeš si do Configuratoru přidat následující metodu:

	public static function createServiceEntityManager(DI\Container $container)
	{
		return $container->doctrine->entityManager;
	}

A pak už stačí upravit například v configu, aby se ti tam entity manager posílal automaticky…