Zapnutí cache v Nette\Database

- Vyki
 - Člen | 388
 
Tak se mrkni do sandboxu https://github.com/…e/master/app, respektive do konfiguracniho souboru https://github.com/…/config.neon

- Richard Faila
 - Člen | 40
 
Vyki napsal(a):
Tak se mrkni do sandboxu https://github.com/…e/master/app, respektive do konfiguracniho souboru https://github.com/…/config.neon
A tam se dá vidět konkrétně co? Vidím jen normální konfigurák… Já jsme se to snažil zprovoznit jak to bylo ukázáno na https://www.youtube.com/watch?… ale sám si nejsem si jistý jestli to mám správně.

- Richard Faila
 - Člen | 40
 
Ještě ukážu jak to mám já, třeba to někomu pomůže, protože ve videu to je jinak
config.neon
<?php
database:
      class: Nette\Database\Connection
      arguments: ['mysql:host=localhost;dbname=nette', 'root', '']
    model:
      class: Model
      arguments: [@database,@cacheStorage]
?>
V modelu potom:
<?php
`/**
 * Model base class.
 */
class Model extends Object
{
	/** @var Nette\Database\Connection */
	public $database;
	public function __construct(Nette\Database\Connection $database, $cacheStorage){
		$this->database = $database;
		$this->database->setCacheStorage($cacheStorage);
	}
?>
Samotného by mě zajímalo jestli to je správně, protože to místy vypadá, že to nefunguje.
Editoval Richard Faila (20. 9. 2011 20:01)

- studna
 - Člen | 181
 
Toto není zrovna pěkné řešení. Co třeba takto?
// ...
class ServiceFactory
{
	public static function createServiceDatabase( Container $container )
	{
		$db = new Connection(...);
		$db->setCacheStorage( $container->cacheStorage );
		return $db;
	}
}
config.neon
database:
	factory: ServiceFactory::createServiceDatabase
				
- Tomáš Kuba
 - Člen | 15
 
Pro ty pomalejší jako jsem já:
class ServiceFactory {
	public static function createServiceDatabase(DiContainer $container, $dns, $user, $password) {
		$db = new Connection($dns, $user, $password);
		$db->setCacheStorage($container->cacheStorage);
		return $db;
	}
}
v config.neon pak:
	database:
		#class: Connection
		arguments: ['mysql:host=localhost;dbname=jmenodatabaze', 'uzivatel', 'heslo']
		factory: ServiceFactory::createServiceDatabase
					Editoval Tomáš Kuba (4. 10. 2011 13:43)

- mulisano
 - Člen | 8
 
Richard Faila napsal(a):
Ještě ukážu jak to mám já, třeba to někomu pomůže, protože ve videu to je jinak
config.neon
<?php database: class: Nette\Database\Connection arguments: ['mysql:host=localhost;dbname=nette', 'root', ''] model: class: Model arguments: [@database,@cacheStorage] ?>V modelu potom:
<?php `/** * Model base class. */ class Model extends Object { /** @var Nette\Database\Connection */ public $database; public function __construct(Nette\Database\Connection $database, $cacheStorage){ $this->database = $database; $this->database->setCacheStorage($cacheStorage); } ?>Samotného by mě zajímalo jestli to je správně, protože to místy vypadá, že to nefunguje.
Toto řešení je pouze nepěkné nebo je zároveň i nefunkční?