From 56c2e757955fb87c3123c05eba14faacf3e1f24f Mon Sep 17 00:00:00 2001 From: Henk Koop Date: Thu, 8 Mar 2018 13:12:59 +0100 Subject: [PATCH 1/2] dont cache if model::$isCachable == false --- src/Traits/ModelCaching.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Traits/ModelCaching.php b/src/Traits/ModelCaching.php index 8cfec59..ed683c5 100644 --- a/src/Traits/ModelCaching.php +++ b/src/Traits/ModelCaching.php @@ -7,12 +7,13 @@ trait ModelCaching { public static function all($columns = ['*']) { - if (config('laravel-model-caching.disabled')) { + $class = get_called_class(); + $instance = new $class; + + if (config('laravel-model-caching.disabled') || !$instance->isCachable) { return parent::all($columns); } - $class = get_called_class(); - $instance = new $class; $tags = [str_slug(get_called_class())]; $key = $instance->makeCacheKey(); From 2e8b2d099e71c8d789278542e88e0c5bc6c7dd0a Mon Sep 17 00:00:00 2001 From: Henk Koop Date: Sat, 10 Mar 2018 09:18:00 +0100 Subject: [PATCH 2/2] make disableCache() work for all() --- src/QueryOrModelCaller.php | 54 +++++++++++++++++++++++++++++++++++++ src/Traits/ModelCaching.php | 8 ++++-- 2 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 src/QueryOrModelCaller.php diff --git a/src/QueryOrModelCaller.php b/src/QueryOrModelCaller.php new file mode 100644 index 0000000..22db5fe --- /dev/null +++ b/src/QueryOrModelCaller.php @@ -0,0 +1,54 @@ +query = $query; + $this->model = $model; + $this->disableInConfig = $disableInConfig; + } + + /** + * @param $name + * @param $arguments + * + * @return mixed + */ + public function __call($name, $arguments) + { + if ($name == 'all') + $result = call_user_func_array([$this->model, 'all'], $arguments); + else + $result = call_user_func_array([$this->query, $name], $arguments); + + config()->set('laravel-model-caching.disabled', $this->disableInConfig); + + return $result; + } +} diff --git a/src/Traits/ModelCaching.php b/src/Traits/ModelCaching.php index ed683c5..12215ed 100644 --- a/src/Traits/ModelCaching.php +++ b/src/Traits/ModelCaching.php @@ -1,6 +1,7 @@ isCachable()) { + config()->set('laravel-model-caching.disabled', true); $query = $query->disableModelCaching(); } - return $query; + return new QueryOrModelCaller($query, $this, $disabledInConfig); } public function scopeWithCacheCooldownSeconds(