Skip to content

Commit e1cb6da

Browse files
committed
WIP - started work on softdeletes
1 parent 13ca897 commit e1cb6da

File tree

7 files changed

+82
-2
lines changed

7 files changed

+82
-2
lines changed

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,11 @@ This comes in handy when manually making updates to the database. You could also
180180
trigger this after making updates to the database from sources outside your
181181
Laravel app.
182182

183-
## Possible Future Improvements
183+
## Things That Don't Work Currently
184+
The following items currently do no work with this package:
184185
- [caching of lazy-loaded relationships, see #127](https://github.com/GeneaLabs/laravel-model-caching/issues/127).
186+
- [using select() clauses in Eloquent queries, see #238](https://github.com/GeneaLabs/laravel-model-caching/issues/238) (word-around discussed in the issue)
187+
- [using SoftDeletes on Models, see #237](https://github.com/GeneaLabs/laravel-model-caching/issues/237)
185188

186189
## Summary
187190
**That's all you need to do. All model queries and relationships are now

src/CachedBuilder.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ public function first($columns = ["*"])
7676
return parent::first($columns);
7777
}
7878

79+
if (! is_array($columns)) {
80+
$columns = [$columns];
81+
}
82+
7983
$cacheKey = $this->makeCacheKey($columns, null, "-first");
8084

8185
return $this->cachedValue(func_get_args(), $cacheKey);

tests/Fixtures/Author.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55
use Illuminate\Database\Eloquent\Model;
66
use Illuminate\Database\Eloquent\Relations\HasMany;
77
use Illuminate\Database\Eloquent\Relations\HasOne;
8+
use Illuminate\Database\Eloquent\SoftDeletes;
89

910
class Author extends Model
1011
{
1112
use Cachable;
13+
use SoftDeletes;
1214

1315
protected $casts = [
1416
"finances" => "array",

tests/Fixtures/UncachedAuthor.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,12 @@
44
use Illuminate\Database\Eloquent\Model;
55
use Illuminate\Database\Eloquent\Relations\HasMany;
66
use Illuminate\Database\Eloquent\Relations\HasOne;
7+
use Illuminate\Database\Eloquent\SoftDeletes;
78

89
class UncachedAuthor extends Model
910
{
11+
use SoftDeletes;
12+
1013
protected $casts = [
1114
"finances" => "array",
1215
];
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<?php namespace GeneaLabs\LaravelModelCaching\Tests\Integration\CachedBuilder;
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 SoftDeletesTest extends IntegrationTestCase
19+
{
20+
public function testWithTrashedIsCached()
21+
{
22+
$key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor-authors.id_=_1-first');
23+
$tags = [
24+
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
25+
];
26+
$author = (new UncachedAuthor)
27+
->first();
28+
$author->delete();
29+
30+
$deletedAuthor = (new Author)
31+
->withTrashed()
32+
->find($author->id);
33+
$cachedResults = $this
34+
->cache()
35+
->tags($tags)
36+
->get($key)['value'];
37+
$deletedUncachedAuthor = (new UncachedAuthor)
38+
->withTrashed()
39+
->find($author->id);
40+
41+
$this->assertEquals($cachedResults->toArray(), $deletedAuthor->toArray());
42+
$this->assertEquals($cachedResults->toArray(), $deletedUncachedAuthor->toArray());
43+
}
44+
45+
// public function testWithoutTrashedIsCached()
46+
// {
47+
// $key = sha1('genealabs:laravel-model-caching:testing::memory::authors:genealabslaravelmodelcachingtestsfixturesauthor_1-first');
48+
// $tags = [
49+
// 'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',
50+
// ];
51+
// $author = (new UncachedAuthor)
52+
// ->first();
53+
// $author->delete();
54+
55+
// $deletedAuthor = (new Author)
56+
// ->first($author->id);
57+
// $cachedResults = $this
58+
// ->cache()
59+
// ->tags($tags)
60+
// ->get($key)['value'];
61+
// $deletedUncachedAuthor = (new UncachedAuthor)
62+
// ->first($author->id);
63+
64+
// $this->assertEquals($cachedResults->toArray(), $deletedAuthor->toArray());
65+
// $this->assertEquals($cachedResults->toArray(), $deletedUncachedAuthor->toArray());
66+
// }
67+
}

tests/Integration/CachedModelTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public function testWhereHasIsBeingCached()
111111
})
112112
->get();
113113

114-
$key = sha1('genealabs:laravel-model-caching:testing::memory::books:genealabslaravelmodelcachingtestsfixturesbook-exists-and_books.author_id_=_authors.id-id_=_1-testing::memory::author');
114+
$key = sha1('genealabs:laravel-model-caching:testing::memory::books:genealabslaravelmodelcachingtestsfixturesbook-exists-and_books.author_id_=_authors.id-id_=_1-authors.deleted_at_null-testing::memory::author');
115115
$tags = [
116116
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesbook',
117117
'genealabs:laravel-model-caching:testing::memory::genealabslaravelmodelcachingtestsfixturesauthor',

tests/database/migrations/2017_09_21_010055_create_authors.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public function up()
1010
Schema::create('authors', function (Blueprint $table) {
1111
$table->increments('id');
1212
$table->timestamps();
13+
$table->softDeletes();
1314

1415
$table->string('email');
1516
$table->string('name');

0 commit comments

Comments
 (0)