Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Laravel] Cache
Forum PHP.pl > Forum > PHP > Frameworki
john_doe
Hej,

znalazłem, jak narazie jedyny, artykuł na temat "keszowania" ( w rozumieniu, że nie zwykły Cache::remember w kontrolerze ) , który niby ma odświeżać cache po modyfikacji modelu.

klik

Napisałem sobie generyczne CrudRepository np z taką metodą
  1. public function getBy(string $fieldName, $fieldValue, array $columns = ['*'], $orderBy = null): Collection
  2. {
  3. $stmt = $this->model->where($fieldName, $fieldValue);
  4.  
  5. if (!empty($orderBy))
  6. {
  7. $stmt->orderBy($orderBy);
  8. }
  9.  
  10. return $stmt->get($columns);
  11. }


Chciałbym dołożyć coś w stylu jak w linku aby poprawić wydajność aplikacji oraz aby było to uniwersalne i nie brało z "keszu" jeśli model jest nowszy. Konfiguracja drivera standardowa = file.
Czy możecie podpowiedzieć jak utworzyć np. jakiś bazowy model, który rozszerzałby Eloquent/Model?
Pilsener
Implementacja nowych funkcjonalności to był może i dobry powód by rozszerzać klasę w PHP, ale z 10 lat temu albo więcej (kiedy dziedziczenie i singleton to były jedyne słuszne wzorce, hehe)
Dzisiaj takie rzeczy załatwia się poprzez delegację, czyli dostarczenie jakiejś tam funkcjonalności w miejsce, gdzie jest ona potrzebna.
Masz już repository, więc wg mnie dobrze jest przygotować sobie serwis "cache" i po prostu użyć go w tym repository.
Z tego co pamiętam Laravel daje łatwą możliwość wstrzyknięcia serwisu przez konstruktor i dysponuje także kontenerem serwisów, więc nie powinno być problemu.
Dodatkowo prawie zawsze istnieje potrzeba keszowania nie tylko zapytań do bazy i wtedy wszystko mamy załatwione jednym serwisem.
kleus
Tak jak kolega Pilsener wspomnial najelpiej przez class contructor dac cache i tak go uzywac... jezli juz naprawde chcesz robic cache bazy... co jest dziwne.
Jestem pewien ze odczyc z cache i bazy trwa dokladnie tak samo dlugo - a raczej jest tak samo szybki... WIec po co?
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.