Skip to content

Commit abecd61

Browse files
committed
Fix disabling of all() query
Fixes #97
1 parent 6b65b0d commit abecd61

File tree

4 files changed

+58
-1
lines changed

4 files changed

+58
-1
lines changed

src/CachedBuilder.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?php namespace GeneaLabs\LaravelModelCaching;
22

3+
use GeneaLabs\LaravelModelCaching\Traits\BuilderCaching;
34
use GeneaLabs\LaravelModelCaching\Traits\Caching;
45
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
56

@@ -8,6 +9,7 @@
89
*/
910
class CachedBuilder extends EloquentBuilder
1011
{
12+
use BuilderCaching;
1113
use Caching;
1214

1315
public function avg($column)

src/Traits/BuilderCaching.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?php namespace GeneaLabs\LaravelModelCaching\Traits;
2+
3+
use Illuminate\Database\Eloquent\Collection;
4+
5+
trait BuilderCaching
6+
{
7+
public function all($columns = ['*']) : Collection
8+
{
9+
if (! $this->isCachable()) {
10+
$this->model->disableModelCaching();
11+
}
12+
13+
return $this->model->get($columns);
14+
}
15+
}

tests/Integration/CachedBuilderPaginationTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ public function testPaginationIsCached()
3232
'genealabs:laravel-model-caching:testing:genealabslaravelmodelcachingtestsfixturesauthor',
3333
];
3434

35-
$cachedResults = $this->cache()
35+
$cachedResults = $this
36+
->cache()
3637
->tags($tags)
3738
->get($key)['value'];
3839
$liveResults = (new UncachedAuthor)
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php namespace GeneaLabs\LaravelModelCaching\Tests\Integration\Traits;
2+
3+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Author;
4+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Book;
5+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\PrefixedAuthor;
6+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Profile;
7+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Publisher;
8+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Store;
9+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedAuthor;
10+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedBook;
11+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedProfile;
12+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedPublisher;
13+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedStore;
14+
use GeneaLabs\LaravelModelCaching\Tests\IntegrationTestCase;
15+
use Illuminate\Foundation\Testing\RefreshDatabase;
16+
use Illuminate\Database\Eloquent\Collection;
17+
18+
class BuilderCachingTest extends IntegrationTestCase
19+
{
20+
use RefreshDatabase;
21+
22+
public function testDisablingAllQuery()
23+
{
24+
$allAuthors = (new Author)
25+
->disableCache()
26+
->all();
27+
$key = sha1("genealabs:laravel-model-caching:testing:genealabslaravelmodelcachingtestsfixturesauthor");
28+
$tags = [
29+
"genealabs:laravel-model-caching:testing:genealabslaravelmodelcachingtestsfixturesauthor",
30+
];
31+
$cachedAuthors = $this
32+
->cache()
33+
->tags($tags)
34+
->get($key)["value"];
35+
36+
$this->assertInstanceOf(Collection::class, $allAuthors);
37+
$this->assertNull($cachedAuthors);
38+
}
39+
}

0 commit comments

Comments
 (0)