Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF]Zend_Cache jak cachować rekordy powiązane
Forum PHP.pl > Forum > PHP > Frameworki
amii
W Bootstrap.php inicjuję obiekt Cache_Manager, następnie w kontrolerze mam tak jak poniżej:
Co chce osiągnąć : przechować w pliku cache rekordy powiązane z training_instance
Pod spodem moje próby te zakomentowane, jeśli odkomentuję to tablica nadpisuje a dodanie własności title nic nie zmienia
Metoda getTraining to odpowiednik findParentRow

  1. if (false === ($menu_cache = $cache->load($cacheMenu))) {
  2. $m_trainings = new Application_Model_DbTable_TrainingInstance();
  3. $select = $m_trainings->select()->where('date_start > ?', new Zend_Db_Expr('CURDATE()'))
  4. ->where('free_places > ?', 0)
  5. ->where('closed = ?', 0)
  6. ->where('cancel = ?', 0)
  7. ->order('date_start ASC')
  8. ->limit(4);
  9. $menu_cache = $m_trainings->fetchAll($select);
  10. foreach ($menu_cache as $t_instance) {
  11. $menu_cache->title = $t_instance->getTraining()->title;
  12. //$menu_titles[]->title = $t_instance->getTraining()->title;
  13. }
  14. $cache->save($menu_cache, $cacheMenu);
  15. //$cache->save($menu_titles, $cacheMenu);
  16. }
  17.  
  18.  
  19. var_dump($menu_cache);
Fluke
Witam,

Ja w swoich aplikacjach cache`wanie rozwiązałem w ten sposób:

Mam tabele: Kategorie, Newsy, Newsy_Kategorie. Przydało by się tutaj dać do cache rekordy z tabel: newsy oraz kategorie.

Dla kategori mam klasę: Logic_Category i w niej metodę getCategories(). Pobiera mi wszystkie kategorie z bazy danych i zapisuje do pliku cache. Gdy chcę wywołać metodę getCategoryById to pobiera kategorie za pomocą metody getCategories i szuka tej, której szukamy.

Teraz klasa: Logic_News. Korzysta z klasy Logic_Category i nie interesuje jej czy cache`uje dane czy nie, ma mieć kategorie. Pobiera dane z tabeli news_categories i pobiera je za pomocą klasy Logic_Category. Na samym końcu zapisuje dane do cache oraz dodaje "tagi": "category_id_1, category_id_20...".

Tak robię z wieloma tabelami i wszystko działa poprawnie.

Dodaj jeszcze, żeby zmienić Cache w news gdy zmieni się nazwa kategorii to będzie trzeba zastosować wzorzec Observer, który wykona metodę modyfikującą caach news`a.

Pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.