Skip to content

Commit b442a68

Browse files
committed
Add model table to cache key
Fixes #192 Fixes #189
1 parent a1c705e commit b442a68

30 files changed

+103
-128
lines changed

composer.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@
2828
"phpunit/phpunit": "7.*",
2929
"predis/predis": "*",
3030
"sebastian/phpcpd": "*",
31-
"symfony/thanks": "*"
31+
"symfony/thanks": "*",
32+
"codedungeon/phpunit-result-printer": "^0.23.4"
3233
},
3334
"autoload": {
3435
"psr-4": {

src/CacheKey.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public function make(
3030
string $keyDifferentiator = ""
3131
) : string {
3232
$key = $this->getCachePrefix();
33+
$key .= $this->getTableSlug();
3334
$key .= $this->getModelSlug();
3435
$key .= $this->getIdColumn($idColumn ?: "");
3536
$key .= $this->getQueryColumns($columns);
@@ -57,6 +58,12 @@ protected function getLimitClause() : string
5758
return "-limit_{$this->query->limit}";
5859
}
5960

61+
protected function getTableSlug() : string
62+
{
63+
return str_slug($this->model->getTable())
64+
. ":";
65+
}
66+
6067
protected function getModelSlug() : string
6168
{
6269
return str_slug(get_class($this->model));

tests/Integration/CachedBuilder/FindOrFailTest.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,12 @@
1717

1818
class FindOrFailTest extends IntegrationTestCase
1919
{
20-
21-
2220
public function testFindOrFailCachesModels()
2321
{
2422
$author = (new Author)
2523
->findOrFail(1);
2624

27-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor-find_1');
25+
$key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-find_1');
2826
$tags = [
2927
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
3028
];

tests/Integration/CachedBuilder/FindTest.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,10 @@
1717

1818
class FindTest extends IntegrationTestCase
1919
{
20-
21-
2220
public function testFindModelResultsCreatesCache()
2321
{
2422
$author = collect()->push((new Author)->find(1));
25-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor_1');
23+
$key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor_1');
2624
$tags = [
2725
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
2826
];

tests/Integration/CachedBuilder/ForceDeleteTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public function testForceDeleteClearsCache()
2929
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
3030
])
3131
->get(sha1(
32-
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor-id_=_1'
32+
'genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-id_=_1'
3333
))["value"];
3434

3535
(new Author)
@@ -41,7 +41,7 @@ public function testForceDeleteClearsCache()
4141
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
4242
])
4343
->get(sha1(
44-
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor-id_=_1'
44+
'genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-id_=_1'
4545
))["value"];
4646

4747
$this->assertEquals(get_class($resultsBefore), get_class($author));

tests/Integration/CachedBuilder/GetTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public function testGetModelResultsCreatesCache()
2323
{
2424
$authors = (new Author)->with('books', 'profile')
2525
->get();
26-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor-books-profile');
26+
$key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-books-profile');
2727
$tags = [
2828
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
2929
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook',
@@ -58,7 +58,7 @@ public function testAccessingGetResultsViaArrayIndexDoesNotError()
5858

5959
public function testGetWithFieldArrayCachesResults()
6060
{
61-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor_id_name');
61+
$key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor_id_name');
6262
$tags = [
6363
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
6464
];

tests/Integration/CachedBuilder/InRandomOrderQueryTest.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717

1818
class InRandomOrderQueryTest extends IntegrationTestCase
1919
{
20-
21-
2220
public function testInRandomOrderCachesResults()
2321
{
2422
$cachedBook1 = (new Book)

tests/Integration/CachedBuilder/LazyLoadTest.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,9 @@
1717

1818
abstract class LazyLoadTest extends IntegrationTestCase
1919
{
20-
21-
2220
// public function testLazyLoadingRelationshipQuery()
2321
// {
24-
// $key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook-id_<_5');
22+
// $key = sha1('genealabs:laravel-model-caching:testing::memory::books:genealabslaravelmodelcachingtestsfixturesbook-id_<_5');
2523
// $tags = [
2624
// 'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook',
2725
// ];

tests/Integration/CachedBuilder/PaginateTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public function testPaginationIsCached()
2525
$authors = (new Author)
2626
->paginate(3);
2727

28-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor-paginate_by_3_page_1');
28+
$key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-paginate_by_3_page_1');
2929
$tags = [
3030
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
3131
];
@@ -155,7 +155,7 @@ public function testPaginationWithCustomOptionsReturnsCorrectLinks()
155155

156156
public function testCustomPageNamePagination()
157157
{
158-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor-paginate_by_3_custom-page_1');
158+
$key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-paginate_by_3_custom-page_1');
159159
$tags = [
160160
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
161161
];

tests/Integration/CachedBuilder/SelectTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class SelectTest extends IntegrationTestCase
1919
{
2020
public function testSelectWithRawColumns()
2121
{
22-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook_orderBy_author_id_asc');
22+
$key = sha1('genealabs:laravel-model-caching:testing::memory::books:genealabslaravelmodelcachingtestsfixturesbook_orderBy_author_id_asc');
2323
$tags = [
2424
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook',
2525
];

tests/Integration/CachedBuilder/UpdateExistingPivotTest.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717

1818
class UpdateExistingPivotTest extends IntegrationTestCase
1919
{
20-
21-
2220
public function testInRandomOrderCachesResults()
2321
{
2422
$book = (new Book)

tests/Integration/CachedBuilder/WhenTest.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,9 @@
1717

1818
class WhenTest extends IntegrationTestCase
1919
{
20-
21-
2220
public function testWhenQuery()
2321
{
24-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook-id_<_5');
22+
$key = sha1('genealabs:laravel-model-caching:testing::memory::books:genealabslaravelmodelcachingtestsfixturesbook-id_<_5');
2523
$tags = [
2624
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook',
2725
];

tests/Integration/CachedBuilder/WhereHasTest.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717

1818
class WhereHasTest extends IntegrationTestCase
1919
{
20-
21-
2220
public function testWhereHasClause()
2321
{
2422
$authors = (new Author)

tests/Integration/CachedBuilder/WhereInRawTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class WhereInRawTest extends IntegrationTestCase
1919
{
2020
public function testWhereInRawUsingRelationship()
2121
{
22-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor-books');
22+
$key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-books');
2323
$tags = [
2424
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
2525
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook',

tests/Integration/CachedBuilder/WhereInTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class WhereInTest extends IntegrationTestCase
1919
{
2020
public function testWithInUsingCollectionQuery()
2121
{
22-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook-author_id_in_1_2_3_4');
22+
$key = sha1('genealabs:laravel-model-caching:testing::memory::books:genealabslaravelmodelcachingtestsfixturesbook-author_id_in_1_2_3_4');
2323
$tags = [
2424
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook',
2525
];

tests/Integration/CachedBuilder/WhereJsonContainsTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public function setUp()
3636

3737
public function testWithInUsingCollectionQuery()
3838
{
39-
$key = sha1('genealabs:laravel-model-caching:pgsql:testing:genealabslaravelmodelcachingtestsfixturesauthor-finances->total_jsoncontains_5000');
39+
$key = sha1('genealabs:laravel-model-caching:pgsql:testing:authors:genealabslaravelmodelcachingtestsfixturesauthor-finances->total_jsoncontains_5000');
4040
$tags = [
4141
'genealabs:laravel-model-caching:pgsql:testing:genealabslaravelmodelcachingtestsfixturesauthor',
4242
];

tests/Integration/CachedBuilder/WhereNotInTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class WhereNotInTest extends IntegrationTestCase
1919
{
2020
public function testWhereNotInQuery()
2121
{
22-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook-author_id_not_in_1_2_3_4');
22+
$key = sha1('genealabs:laravel-model-caching:testing::memory::books:genealabslaravelmodelcachingtestsfixturesbook-author_id_not_in_1_2_3_4');
2323
$tags = [
2424
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook',
2525
];
@@ -44,7 +44,7 @@ public function testWhereNotInQuery()
4444

4545
public function testWhereNotInResults()
4646
{
47-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook-id_not_in_1_2');
47+
$key = sha1('genealabs:laravel-model-caching:testing::memory::books:genealabslaravelmodelcachingtestsfixturesbook-id_not_in_1_2');
4848
$tags = [
4949
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook',
5050
];
@@ -65,7 +65,7 @@ public function testWhereNotInResults()
6565

6666
public function testWhereNotInSubquery()
6767
{
68-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook-id_notinsub_book-id_<_10');
68+
$key = sha1('genealabs:laravel-model-caching:testing::memory::books:genealabslaravelmodelcachingtestsfixturesbook-id_notinsub_bookbooks:-id_<_10');
6969
$tags = [
7070
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook',
7171
];

tests/Integration/CachedBuilder/WhereNullTest.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717

1818
class WhereNullTest extends IntegrationTestCase
1919
{
20-
21-
2220
public function testWhereNullClause()
2321
{
2422
$books = (new Book)

tests/Integration/CachedBuilder/WhereRawTest.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,13 @@
1717

1818
class WhereRawTest extends IntegrationTestCase
1919
{
20-
21-
2220
public function testRawWhereClauseParsing()
2321
{
2422
$authors = collect([(new Author)
2523
->whereRaw('name <> \'\'')
2624
->first()]);
2725

28-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor_and_name-first');
26+
$key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor_and_name-first');
2927
$tags = ['genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor'];
3028

3129
$cachedResults = collect([$this->cache()->tags($tags)->get($key)['value']]);
@@ -45,7 +43,7 @@ public function testWhereRawWithQueryParameters()
4543
->whereRaw("name != 'test3'")
4644
->whereRaw('name = ? AND name != ?', [$authorName, "test2"])
4745
->get();
48-
$key = sha1("genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthorname_!=_test_and_name_!=_'test3'_and_name_=_Guido_Feest__AND_name_!=_test2");
46+
$key = sha1("genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthorname_!=_test_and_name_!=_'test3'_and_name_=_Guido_Feest__AND_name_!=_test2");
4947
$tags = ['genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor'];
5048

5149
$cachedResults = collect([$this->cache()->tags($tags)->get($key)['value']]);

tests/Integration/CachedBuilder/WhereTest.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717

1818
class WhereTest extends IntegrationTestCase
1919
{
20-
21-
2220
public function testWithQuery()
2321
{
2422
$books = (new Book)
@@ -45,7 +43,7 @@ public function testColumnsRelationshipWhereClauseParsing()
4543
$authors = (new Author)
4644
->where('name', '=', $author->name)
4745
->get();
48-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor-name_=_' .
46+
$key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-name_=_' .
4947
$author->name);
5048
$tags = ['genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor'];
5149

@@ -67,7 +65,7 @@ private function processWhereClauseTestWithOperator(string $operator)
6765
->where('name', $operator, $author->name)
6866
->get();
6967
$keyParts = [
70-
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor-name',
68+
'genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-name',
7169
'_',
7270
str_replace(' ', '_', strtolower($operator)),
7371
'_',
@@ -100,7 +98,7 @@ public function testWhereClauseParsingOfOperators()
10098

10199
public function testTwoWhereClausesAfterEachOther()
102100
{
103-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor-id_>_-id_<_100');
101+
$key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-id_>_-id_<_100');
104102
$tags = ['genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor'];
105103

106104
$authors = (new Author)

tests/Integration/CachedBuilder/WithTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public function testMultiLevelWithQuery()
6363

6464
public function testWithBelongsToManyRelationshipQuery()
6565
{
66-
$key = sha1('genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook-books.id_=_3-stores-first');
66+
$key = sha1('genealabs:laravel-model-caching:testing::memory::books:genealabslaravelmodelcachingtestsfixturesbook-books.id_=_3-stores-first');
6767
$tags = [
6868
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook',
6969
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesstore',

tests/Integration/CachedBuilderMultipleQueryTest.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717

1818
class CachedBuilderMultipleQueryTest extends IntegrationTestCase
1919
{
20-
21-
2220
public function testCallingAllThenFirstQueriesReturnsDifferingResults()
2321
{
2422
$allAuthors = (new Author)->all();

tests/Integration/CachedBuilderRelationshipsTest.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,13 @@
1717

1818
class CachedBuilderRelationshipsTest extends IntegrationTestCase
1919
{
20-
21-
2220
public function testHasRelationshipResults()
2321
{
2422
$booksWithStores = (new Book)
2523
->with("stores")
2624
->has("stores")
2725
->get();
28-
$key = "genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook-exists-and_books.id_=_book_store.book_id-stores";
26+
$key = "genealabs:laravel-model-caching:testing::memory::books:genealabslaravelmodelcachingtestsfixturesbook-exists-and_books.id_=_book_store.book_id-stores";
2927
$tags = [
3028
"genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook",
3129
"genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesstore",

0 commit comments

Comments
 (0)