Skip to content

Commit e53999c

Browse files
committed
Fix caching of first() queries
Fixes #100
1 parent 3dd4b42 commit e53999c

File tree

3 files changed

+43
-2
lines changed

3 files changed

+43
-2
lines changed

src/CachedBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public function first($columns = ["*"])
6060
return parent::first($columns);
6161
}
6262

63-
$cacheKey = $this->makeCacheKey($columns);
63+
$cacheKey = $this->makeCacheKey($columns, null, "-first");
6464

6565
return $this->cachedValue(func_get_args(), $cacheKey);
6666
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<?php namespace GeneaLabs\LaravelModelCaching\Tests\Integration;
2+
3+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Author;
4+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Book;
5+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Profile;
6+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Publisher;
7+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Store;
8+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedAuthor;
9+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedBook;
10+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedProfile;
11+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedPublisher;
12+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\UncachedStore;
13+
use GeneaLabs\LaravelModelCaching\Tests\Fixtures\Http\Resources\Author as AuthorResource;
14+
use GeneaLabs\LaravelModelCaching\Tests\IntegrationTestCase;
15+
use Illuminate\Foundation\Testing\RefreshDatabase;
16+
use Illuminate\Support\Collection;
17+
18+
class CachedBuilderMultipleQueryTest extends IntegrationTestCase
19+
{
20+
use RefreshDatabase;
21+
22+
public function testCallingAllThenFirstQueriesReturnsDifferingResults()
23+
{
24+
$allAuthors = (new Author)->all();
25+
$firstAuthor = (new Author)->first();
26+
27+
$this->assertNotEquals($allAuthors, $firstAuthor);
28+
$this->assertInstanceOf(Author::class, $firstAuthor);
29+
$this->assertInstanceOf(Collection::class, $allAuthors);
30+
}
31+
32+
public function testCallingGetThenFirstQueriesReturnsDifferingResults()
33+
{
34+
$allAuthors = (new Author)->get();
35+
$firstAuthor = (new Author)->first();
36+
37+
$this->assertNotEquals($allAuthors, $firstAuthor);
38+
$this->assertInstanceOf(Author::class, $firstAuthor);
39+
$this->assertInstanceOf(Collection::class, $allAuthors);
40+
}
41+
}

tests/Integration/CachedBuilderTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ public function testFirstModelResultsCreatesCache()
263263
{
264264
$author = (new Author)
265265
->first();
266-
$key = sha1('genealabs:laravel-model-caching:testing:genealabslaravelmodelcachingtestsfixturesauthor');
266+
$key = sha1('genealabs:laravel-model-caching:testing:genealabslaravelmodelcachingtestsfixturesauthor-first');
267267
$tags = [
268268
'genealabs:laravel-model-caching:testing:genealabslaravelmodelcachingtestsfixturesauthor',
269269
];

0 commit comments

Comments
 (0)