PHPackages                             geeky/query-cache-builder - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. geeky/query-cache-builder

ActiveLibrary[Database &amp; ORM](/categories/database)

geeky/query-cache-builder
=========================

This package is caching every single query per request, to make sure that you will never duplicate your query again.

1.1(7y ago)2180.5k—0.9%5[2 issues](https://github.com/TheGeekyM/caching-queries/issues)MITPHP

Since Jun 13Pushed 7y ago4 watchersCompare

[ Source](https://github.com/TheGeekyM/caching-queries)[ Packagist](https://packagist.org/packages/geeky/query-cache-builder)[ RSS](/packages/geeky-query-cache-builder/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (2)DependenciesVersions (3)Used By (0)

Laravel Query Cache Builder
===========================

[](#laravel-query-cache-builder)

If you are using [Barryvdh's Debug Bar](https://github.com/barryvdh/laravel-debugbar) and you're seeing tons of duplicate queries, and you simply have no time to track them all down.

[![Screenshot](https://camo.githubusercontent.com/6eb929b0b450089a1ace4962e7b35c0f23f3419bda5354a173b3c14cb6e1ae19/68747470733a2f2f696d6167652e6962622e636f2f6475653168792f6265666f72652e706e67)](https://camo.githubusercontent.com/6eb929b0b450089a1ace4962e7b35c0f23f3419bda5354a173b3c14cb6e1ae19/68747470733a2f2f696d6167652e6962622e636f2f6475653168792f6265666f72652e706e67)

The package is caching all duplicates queries and it makes sure that you will never be executed the same query again, by overriding the method `runSelect` exsists in `Illuminate\Database\Query\Builder` that runs in every select query in Laravel, and we're going to cache every query by it's SQL and it's Bindings.

So instead of excuting a query, we will cache it as a key and it's results as a value.

If a query excutes, we will check if the query executed once before so we will retrieve the cached value or we will excute the query then cache it.

[![Screenshot](https://camo.githubusercontent.com/ac379256285e66252a12148a4257c6a486b711b09803149614792c9c4aaac500/68747470733a2f2f696d6167652e6962622e636f2f6454347465642f61667465722e706e67)](https://camo.githubusercontent.com/ac379256285e66252a12148a4257c6a486b711b09803149614792c9c4aaac500/68747470733a2f2f696d6167652e6962622e636f2f6454347465642f61667465722e706e67)

Installation
------------

[](#installation)

1- Install using composer:

```
 composer require geeky/query-cache-builder

```

2- Add a custom Cache Driver. We're doing this so that we don't mess with any existing Cache logic you might already be using. In `~/config/cache.php` add below cache stores array :

```
Note: you can use what you want of cache drivers.

'stores' => [
'cache-builder' => [
'driver' => 'file',
'path'   => storage_path('framework/cache')
  ]
]

```

3- If you don't use auto-discovery, add the ServiceProvider to the providers array in config/app.php

```
Geeky\Database\CacheBuilderServiceProvider::class

```

4- Copy the package config to your local config with the publish command:

```
php artisan vendor:publish --provider="Geeky\Database\CacheBuilderServiceProvider"

```

This will publish the `cachebuilder` config file that gives you the ability to enable cahcing queries and the time you want to cache them.

**Note:** In case you used an `array cache driver` the quires will be cached in-memory Cache store that just stores everything inside an array. This is typically wiped at the end of each request,as once the application gives a response, this is naturally freed from memory. so it doesn't matter if you edit the minutes to 0 or any integer number.

```
