Skip to content

Commit 43c8669

Browse files
committed
Add support for increment and decrement query methods
1 parent 23011ad commit 43c8669

File tree

3 files changed

+86
-0
lines changed

3 files changed

+86
-0
lines changed

src/CachedBuilder.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@ public function count($columns = "*")
3535
return $this->cachedValue(func_get_args(), $cacheKey);
3636
}
3737

38+
public function decrement($column, $amount = 1, array $extra = [])
39+
{
40+
$this->cache($this->makeCacheTags())
41+
->flush();
42+
43+
return parent::decrement($column, $amount, $extra);
44+
}
45+
3846
public function delete()
3947
{
4048
$this->cache($this->makeCacheTags())
@@ -88,6 +96,14 @@ public function get($columns = ["*"])
8896
return $this->cachedValue(func_get_args(), $cacheKey);
8997
}
9098

99+
public function increment($column, $amount = 1, array $extra = [])
100+
{
101+
$this->cache($this->makeCacheTags())
102+
->flush();
103+
104+
return parent::increment($column, $amount, $extra);
105+
}
106+
91107
public function inRandomOrder($seed = '')
92108
{
93109
$this->isCachable = false;
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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 DecrementTest extends IntegrationTestCase
19+
{
20+
public function testDecrementingInvalidatesCache()
21+
{
22+
$book = (new Book)
23+
->find(1);
24+
$originalPrice = $book->price;
25+
$originalDescription = $book->description;
26+
27+
$book->decrement("price", 1.25, ["description" => "test description update"]);
28+
$book = (new Book)
29+
->find(1);
30+
31+
$this->assertEquals($originalPrice - 1.25, $book->price);
32+
$this->assertNotEquals($originalDescription, $book->description);
33+
$this->assertEquals($book->description, "test description update");
34+
}
35+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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 IncrementTest extends IntegrationTestCase
19+
{
20+
public function testIncrementingInvalidatesCache()
21+
{
22+
$book = (new Book)
23+
->find(1);
24+
$originalPrice = $book->price;
25+
$originalDescription = $book->description;
26+
27+
$book->increment("price", 1.25, ["description" => "test description update"]);
28+
$book = (new Book)
29+
->find(1);
30+
31+
$this->assertEquals($originalPrice + 1.25, $book->price);
32+
$this->assertNotEquals($originalDescription, $book->description);
33+
$this->assertEquals($book->description, "test description update");
34+
}
35+
}

0 commit comments

Comments
 (0)