Problem s cache v Nette\Database

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

Chtel bych se zeptat ke cachovani u databaze…

K databazi se pripojuji pres metodu init() v Modelu:

<?php
class Model extends Nette\Object
{
   static public $db;

   static function init($config)
   {
      self::$db = new Nette\Database\Connection($config->dsn, $config->user, $config->password);
      self::$db->cache = Nette\Environment::getCache('db');
   }

   function getCategories()
   {
       return self::$db->table('product_categories');
   }
}
?>

Chapu spravne, ze pokud je cachovani nastaveno, tak si to pamatuje sloupce, ktere vyuziji pri selectu, a pri dalsim dotazu vybere z db jen tyto sloupce (tedy misto SELECT * to bude napr. SELECT id, name) ?

Narazil jsem ale na problem, ktery nevim jak vyresit.
Mam HomepagePresenter a CategoryPresenter, v obojim vlastne vykonavam stejny dotaz, ktery se lisi akorat v podmince where.

HomepagePresenter mi zobrazuje hlavni stranku, ktera ma trochu jiny layout nez podstranky a zobrazuje text z databaze z tabulky „categories“.

<?php
$this->model->categories->where(array('url' => 'hlavni-stranka'))->fetch();
?>

CategoryPresenter mi pak zobrazuje podstranky a podle url vybere z databaze prislusnou kategorii, opet se jedna o tabulku „categories“.

<?php
$this->model->categories->where(array('url' => $url))->fetch();
?>

A problem nastava v tom, ze na HP potrebuji o sloupec (h1_seo) mene nez v podkategoriich, takze v podkategorii mi pak sloupec (h1_seo) v selectu chybi.

Poradi mi nekdo co s tim? Snad jsem to napsal aspon trosku srozumitelne.
Vim ze muzu vypnout to cachovani, ale prijde mi to skoda a co jsem zkousel, ma to pomerne velky vliv na dobu vykonavani.