File tree Expand file tree Collapse file tree 2 files changed +78
-0
lines changed Expand file tree Collapse file tree 2 files changed +78
-0
lines changed Original file line number Diff line number Diff line change 1+ {
2+ "name" : " genealabs/laravel-cached-model" ,
3+ "description" : " Automatic caching for Eloquent models." ,
4+ "license" : " MIT" ,
5+ "authors" : [
6+ {
7+ "name" : " Mike Bronner" ,
8+ "email" : " hello@genealabs.com"
9+ }
10+ ],
11+ "require" : {
12+ "php" : " >=7.0.0" ,
13+ "illuminate/cache" : " 5.5.*" ,
14+ "illuminate/database" : " 5.5.*"
15+ },
16+ "require-dev" : {
17+ "laravel/laravel" : " 5.5.*" ,
18+ "mockery/mockery" : " 0.9.*" ,
19+ "phpmd/phpmd" : " ^2.6" ,
20+ "phpunit/phpunit" : " 5.7.*" ,
21+ "satooshi/php-coveralls" : " dev-master@dev" ,
22+ "sebastian/phpcpd" : " *"
23+ },
24+ "autoload" : {
25+ "psr-4" : {
26+ "GeneaLabs\\ LaravelCachedModel\\ " : " src/" ,
27+ "GeneaLabs\\ LaravelCachedModel\\ Tests\\ " : " tests/"
28+ }
29+ }
30+ }
Original file line number Diff line number Diff line change 1+ <?php namespace GeneaLabs \LaravelCachableModel \Traits ;
2+
3+ use Illuminate \Database \Eloquent \Model ;
4+ use Illuminate \Cache \CacheManager ;
5+ use Illuminate \Cache \TaggableStore ;
6+
7+ abstract class CachedModel extends Model
8+ {
9+ public static function boot ()
10+ {
11+ parent ::boot ();
12+
13+ static ::created (function () {
14+ self ::flushCache ();
15+ });
16+
17+ static ::deleted (function () {
18+ self ::flushCache ();
19+ });
20+
21+ static ::saved (function () {
22+ self ::flushCache ();
23+ });
24+
25+ static ::updated (function () {
26+ self ::flushCache ();
27+ });
28+ }
29+
30+ public function cache (array $ tags = [])
31+ {
32+ $ cache = cache ();
33+
34+ if (is_subclass_of (cache ()->getStore (), TaggableStore::class)) {
35+ array_push ($ tags , str_slug (get_called_class ()));
36+ $ cache = $ cache ->tags ($ tags );
37+ }
38+
39+ return $ cache ;
40+ }
41+
42+ public static function flushCache ()
43+ {
44+ cache ()->tags ([str_slug (get_called_class ())])
45+ ->flush ();
46+ }
47+ }
48+ }
You can’t perform that action at this time.
0 commit comments