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.
https://laravel-news.com/laravel-model-caching
Napisałem sobie generyczne CrudRepository np z taką metodą
public function getBy(string $fieldName, $fieldValue, http://www.php.net/array $columns = ['*'], $orderBy = null): Collection { $stmt = $this->model->where($fieldName, $fieldValue); if (!http://www.php.net/empty($orderBy)) { $stmt->orderBy($orderBy); } return $stmt->get($columns); }
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.
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?
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)