protected function cache($key, Builder $query, $verb = 'get')
    {
        $actualKey = $this->indexKey($key);

        $fetchData = function () use ($actualKey, $query, $verb) {
            $this->log('refreshing cache for '.get_class($this).' ('.$actualKey.')');

            return $this->callQueryVerb($query, $verb);
        };

        if ($this->enableCaching) {
            if ($this->cacheForMinutes > 0) {
                return CacheFacade::remember($actualKey, $this->cacheForMinutes, $fetchData);
            }

            return CacheFacade::rememberForever($actualKey, $fetchData);
        }

        return $fetchData();
    }