File tree Expand file tree Collapse file tree 2 files changed +60
-2
lines changed Expand file tree Collapse file tree 2 files changed +60
-2
lines changed Original file line number Diff line number Diff line change
1
+ <?php
2
+
3
+ namespace GeneaLabs \LaravelModelCaching ;
4
+
5
+ use Illuminate \Database \Eloquent \Builder as EloquentBuilder ;
6
+ use Illuminate \Database \Eloquent \Model ;
7
+
8
+ class QueryOrModelCaller
9
+ {
10
+ /**
11
+ * @var CachedBuilder
12
+ */
13
+ protected $ query ;
14
+ /**
15
+ * @var Model
16
+ */
17
+ protected $ model ;
18
+ /**
19
+ * @var bool
20
+ */
21
+ protected $ disableInConfig ;
22
+
23
+ /**
24
+ * QueryOrModelCaller constructor.
25
+ *
26
+ * @param EloquentBuilder $query
27
+ * @param Model $model
28
+ * @param bool $disableInConfig
29
+ */
30
+ public function __construct (EloquentBuilder $ query , Model $ model , bool $ disableInConfig )
31
+ {
32
+ $ this ->query = $ query ;
33
+ $ this ->model = $ model ;
34
+ $ this ->disableInConfig = $ disableInConfig ;
35
+ }
36
+
37
+ /**
38
+ * @param $name
39
+ * @param $arguments
40
+ *
41
+ * @return mixed
42
+ */
43
+ public function __call ($ name , $ arguments )
44
+ {
45
+ if ($ name == 'all ' )
46
+ $ result = call_user_func_array ([$ this ->model , 'all ' ], $ arguments );
47
+ else
48
+ $ result = call_user_func_array ([$ this ->query , $ name ], $ arguments );
49
+
50
+ config ()->set ('laravel-model-caching.disabled ' , $ this ->disableInConfig );
51
+
52
+ return $ result ;
53
+ }
54
+ }
Original file line number Diff line number Diff line change 1
1
<?php namespace GeneaLabs \LaravelModelCaching \Traits ;
2
2
3
3
use GeneaLabs \LaravelModelCaching \CachedBuilder ;
4
+ use GeneaLabs \LaravelModelCaching \QueryOrModelCaller ;
4
5
use Illuminate \Database \Eloquent \Builder as EloquentBuilder ;
5
6
6
7
trait ModelCaching
@@ -53,13 +54,16 @@ public function newEloquentBuilder($query)
53
54
return new CachedBuilder ($ query );
54
55
}
55
56
56
- public function scopeDisableCache (EloquentBuilder $ query ) : EloquentBuilder
57
+ public function scopeDisableCache (EloquentBuilder $ query ) : QueryOrModelCaller
57
58
{
59
+ $ disabledInConfig = config ('laravel-model-caching.disabled ' );
60
+
58
61
if ($ this ->isCachable ()) {
62
+ config ()->set ('laravel-model-caching.disabled ' , true );
59
63
$ query = $ query ->disableModelCaching ();
60
64
}
61
65
62
- return $ query ;
66
+ return new QueryOrModelCaller ( $ query, $ this , $ disabledInConfig ) ;
63
67
}
64
68
65
69
public function scopeWithCacheCooldownSeconds (
You can’t perform that action at this time.
0 commit comments