![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 350 Pomógł: 31 Dołączył: 23.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
Cześć
Piszę helper, który będzie obsługiwał wszystko co związane z konfiguracją strony internetowej - zastanawiam się w jaki sposób wrzucić zwrócony wynik (przez findAll()) do cache. W tej chwili mam taki kod:
W sieci znalazłem "useResultCache", ale patrząc na przykłady znalezione w sieci to działa dopiero przy użyciu "createQuery" - przecież nie będę pisał całego zapytania, jak powyższy kod zwraca mi wszystko to czego potrzebuje. Gdy próbuje połączyć useResultCache i wstawiam przed: findAll() otrzymuje komunikat: Kod Undefined method 'useResultCache'. The method name must start with either findBy or findOneBy! Jeśli zamienię kolejność (na końcu będzie useResultCache) to wówczas zwraca, że wymagany jest obiekt. Oraz dodatkowe pytanie, mniejszego priorytetu w Kohanie gdy zwracałem wyniki (przez ->as_array()) mogłem jako argument tej funkcji dodać wg. której kolumny ma być zwrócony wynik np. (->as_array('title')) i wówczas zwraca mi wyniki sortowane według klucza "title" - czy w SF2 jest także taka możliwość? |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Pytania nie mają za dużego związku z Symfony, dotyczą one Doctrine. Powinieneś w swoim repozytorium utworzyć metodę, która utworzy zapytanie (DQL) i ustawi by wyniki były zapisywane w pamięci. Zaś co do drugiego pytania, doprecyzuj proszę czy chodzi Ci o sortowanie wyników (ORDER BY) czy klucze pod jakimi będą dostępne w zwróconej kolekcji/tablicy (INDEXED BY).
PS. useResultCache() to metoda obiektu Doctrine\ORM\Query, zaś getRepository() zwraca obiekt Doctrine\ORM\EntityRepository - jak łatwo się domyślić, jedno z drugim niewiele ma wspólnego. Ten post edytował Crozin 25.12.2013, 15:52:02 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 350 Pomógł: 31 Dołączył: 23.05.2010 Ostrzeżenie: (0%) ![]() ![]() |
W kwestii cache. Zmontowałem taki kod w repozytorium;
Zapytanie zwraca wyniki, ale w profilerze i tak zwraca, że wykonuje się powyższe zapytanie SELECT - nigdzie nie widzę adnotacji, że zapytanie pobierane jest z cache. Czy dobrze zastosowałem "useResultCache" ? Jeśli chodzi o drugą część pytania to chodziło mi o klucze pod jakimi będą dostępne w zwróconej kolekcji/tablicy. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat [...] Zapytanie zwraca wyniki, ale w profilerze i tak zwraca, że wykonuje się powyższe zapytanie SELECT - nigdzie nie widzę adnotacji, że zapytanie pobierane jest z cache. Czy dobrze zastosowałem "useResultCache" ? Na 99% pracujesz w trybie deweloperskim, gdzie domyślną implementacją cache'a jest Doctrine'owski ArrayCache, który jak sama nazwa wskazuje przechowuje cache w pamięci w postaci tablicy, a co za tym idzie po zakończeniu generowania strony przepada, jak i każda inna zmienna PHP.Cytat Jeśli chodzi o drugą część pytania to chodziło mi o klucze pod jakimi będą dostępne w zwróconej kolekcji/tablicy. http://docs.doctrine-project.org/en/latest...#using-index-by
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 17:55 |